Promise 构造函数接受定义 Promise 履行逻辑的执行器函数。出现了一个关键问题:这个执行器函数是异步执行还是同步执行?
行为取决于 Promise 本身的实现。然而,Promises 的 ES6 标准明确指出,promise 的实现总是异步。
参考规范,我们发现执行器函数(在我们的例子中是 y 函数) )确实是同步执行的(参见规范的步骤10)。然而,对 Promise 的 .then() 后续调用,例如 Promise.then(...),总是异步执行(参见“PerformPromiseThen”算法的步骤 8)。
.then() 调用的这种异步性质有几个含义:
考虑以下代码片段:
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
在此示例中,y 函数是同步执行的。但是,一旦事件循环完成,.then() 处理程序就会异步执行。此代码的输出将是:
Result Then handler executed after the synchronous execution of y
以上是Promise 构造函数的执行函数是同步还是异步?的详细内容。更多信息请关注PHP中文网其他相关文章!