首页 > web前端 > js教程 > 正文

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

Linda Hamilton
发布: 2024-10-30 17:26:26
原创
691 人浏览过

Is the Promise Constructor Callback Executed Synchronously or Asynchronously?

异步执行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 对象必须分两步构建:“

  1. 执行器函数必须使用三个参数调用:

    • resolve():执行器可以调用的函数履行承诺。
    • reject():执行者可以调用来拒绝承诺的函数。
    • this:保留供将来使用。
  2. 执行器函数必须同步返回。

但是,对 Promise 的 .then() 调用的后续执行始终是异步的。这在 ES6 规范的第 25.4.5.3.1 节中很明显,它描述了“PerformPromiseThen”算法:

“如果 Promise 的 [[PromiseState]] 内部槽的值被“履行”,... "
"...执行 EnqueueJob("PromiseJobs", PromiseReactionJob, «fulfillReaction, value»)."

类似地,如果 Promise 被拒绝,算法将执行异步作业排队。

结论:

因此,传递给 Promise 构造函数的函数是同步执行的,而根据 ES6 规范,后续的 .then() 调用始终是异步执行的。

以上是Promise构造函数回调是同步执行还是异步执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!