javascript - promise 回调可以延迟吗?

标签 javascript asynchronous promise

当我们设计一个返回 promise 的函数时,像这样:

function getAsyncResult() {

    // synchronous code 1

    return new Promise(function (resolve, reject) {

        // synchronous code 2

        // asynchronous code

    });
}

在创建结果 promise 之前或在回调开始时放置同步代码是否有区别?

换句话说,new Promise(...) 和调用其回调函数之间是否可能存在延迟?

换句话说,同步代码 2 是否有可能延迟执行,而不是在 同步代码 1 之后立即执行?

附言我对 ES6 Promise 和 Bluebird 最感兴趣,不过我很想知道其他主要库是否有不同的做法。

最佳答案

根据ES6 spec ,它所谓的“执行者”(传递给构造函数的回调)立即执行。因此,不以这种方式运行的实现将不符合规范,您可以依赖它。

因此,您可以在调用构造函数之前或在执行程序中放置您的代码,并且它在执行时间方面应该没有任何区别(尽管正如另一个答案所指出的那样,在发生的事情方面会有差异如果代码抛出)。

其他实现可能会有所不同,有些甚至可能不提供 ES6 风格的 promise 构造函数,而是选择以其他方式构建 promise。

关于javascript - promise 回调可以延迟吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37359191/

相关文章:

javascript - sequelize - 获取包含模型的 AVG

javascript - Blogger.com : Can I read <data:post. title/> 包含带有 javascript 的特殊字符

javascript - 页面重新加载后,菜单事件状态仍保留在单击的链接上

ajax - 如何从长时间的异步过程中接收实时更新?

javascript - 将 promise 处理程序绑定(bind)到其类的更好方法

javascript - 我如何从这个 jsFiddle 动态添加一个延迟到 promise 中?

javascript - 在接近零之前,我可以将一个数字乘以小数/分数多少次

java - 在 Java 中处理异步响应的设计模式

javascript - res.end() 是否结束 async.waterfall?

javascript - 从 promise 中返回 Unresolved promise