异步执行Promise构造函数回调
问题:
在以下代码片段中:
<code class="python">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y);</code>
y函数会异步执行还是同步执行?
答案:
promise构造函数回调的执行取决于具体实现
ES6 规范第 25.4.3.1 节中规定:
“如果 executor 不抛出异常,则 Promise 对象必须分两步构建:“
执行器函数必须使用三个参数调用:
但是,对 Promise 的 .then() 调用的后续执行始终是异步的。这在 ES6 规范的第 25.4.5.3.1 节中很明显,它描述了“PerformPromiseThen”算法:
“如果 Promise 的 [[PromiseState]] 内部槽的值被“履行”,... "
"...执行 EnqueueJob("PromiseJobs", PromiseReactionJob, «fulfillReaction, value»)."
类似地,如果 Promise 被拒绝,算法将执行异步作业排队。
结论:
因此,传递给 Promise 构造函数的函数是同步执行的,而根据 ES6 规范,后续的 .then() 调用始终是异步执行的。
以上是Promise构造函数回调是同步执行还是异步执行?的详细内容。更多信息请关注PHP中文网其他相关文章!