Promise 构造函数回调的同步性
在 Promise 构造的上下文中,您可能想知道提供给 Promise 的回调的执行时序构造函数。让我们详细探讨这个问题。
考虑以下代码片段:
function doSomethingAsynchronous() { return new Promise((resolve) => { const result = doSomeWork(); setTimeout(() => { resolve(result); }, 100); }); }
构造此 Promise 时,在什么时候调用 doSomeWork()?
根据ECMAScript规范,执行器函数(提供给构造函数的回调)被同步调用基于承诺建设。这意味着 doSomeWork() 将在 Promise 创建时立即执行,然后回调继续执行。 MDN 是这样规定的:
执行器被同步调用(一旦 Promise 被构造),以resolveFunc 和rejectFunc 函数作为参数。
执行器调用的同步本质是由规范保证。例如,当使用 all 或 race 组成多个 Promise 时,以及当执行器具有同步副作用时,此保证是相关的。
以上是Promise构造函数的回调什么时候执行?的详细内容。更多信息请关注PHP中文网其他相关文章!