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

Promise构造函数回调是否异步执行?

如何解决Promise构造函数回调是否异步执行?

  1. 设完成为Call(执行者,未定义,«resolvingFunctions。[[Resolve]],resolvingFunctions。[[Reject]]»)。
  2. 如果完成是突然完成,则
    • 令status为Call(resolvevingFunctions。[[Reject]],undefined,«completion。[[value]]»)。
    • ReturnIfAbrupt(状态)。

ES6标准指出,承诺的实现 是异步的(请参见25.4.5.3Promise.prototype.then节和随附的25.4.5.3.1节PerformPromiseThen)。我已将相关材料放在下面。

然后履行承诺

  1. 否则,如果promise的[[PromiseState]]内部广告位的值“已实现”,
    • 令value为promise的[[PromiseResult]]内部广告位的值。
    • 执行EnqueueJob(“ PromiseJobs”,PromiseReactionJob,«fulfillReaction,value»)。
  2. 否则,如果promise的[[PromiseState]]内部广告位的值被“拒绝”,
    • 假设reason为promise的[[PromiseResult]]内部广告位的值。
    • 执行EnqueueJob(“ PromiseJobs”,PromiseReactionJob,«rejectReaction,reason»)。

:传递给promise的函数是同步执行的,但是后续then调用始终是异步执行的。

解决方法

假设我有这段代码

function y(resolve,reject)
{
  console.log("Result");
  resolve();
}

var promise = new Promise(y);

我想知道的是该函数是否y将异步执行。

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