微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-承诺回调是否可以延迟?

当我们设计一个返回承诺的函数时,如下所示:

function getAsyncResult() {

    // synchronous code 1

    return new Promise(function (resolve, reject) {

        // synchronous code 2

        // asynchronous code

    });
}

是在创建结果的Promise之前还是在回调的开始位置放置同步代码,这是否有所不同?

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

再说一遍,同步代码2是否有可能延迟执行,而不是紧随同步代码1之后执行

附言我对ES6 Promise和Bluebird对此最感兴趣,尽管很高兴知道其他主要库是否会有所不同.

解决方法:

根据ES6 spec,所谓的“执行程序”(传递给构造函数的回调)将立即执行.因此,没有这种行为的实现将不符合要求,您可以依靠它.

因此,您可以将代码放在调用构造函数之前,也可以放在执行程序中,并且在执行时间方面不应该有任何区别(尽管正如另一个答案指出的那样,如果代码在执行方面会有所不同引发).

其他实现可能会有所不同,有些甚至可能不提供ES6样式的诺言构造函数,而是选择以其他方式构建诺言.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐