Promise.resolve() 链式调用中,输出顺序是怎样的?

promise.resolve() 链式调用中,输出顺序是怎样的?

promise 输出顺序面试题

问题

这是在某网站上看到的面试题:

promise.resolve().then(() => {  console.log('start');  return promise.resolve('end');}).then(res => {  console.log(res);});promise.resolve().then(() => {  console.log(1);}).then(() => {  console.log(2);}).then(() => {  console.log(3);}).then(() => {  console.log(4);}).then(() => {  console.log(5);}).then(() => {  console.log(6);});

打印输出的顺序是什么?

答案

不同的浏览器和 ide 中,输出顺序可能有所不同。但是,在大多数情况下,输出顺序为:

start123end456

原因

promise.resolve() 返回的结果是一个 promise 对象,可以通过 .then() 方法添加回调函数。当一个回调函数执行时,会将一个微任务添加到微任务队列中。

在第一个 promise 中,.then() 回调函数中返回了一个 promise 对象。这会导致:

微任务队列中添加一个微任务来解析返回的 promise。微任务队列中添加一个微任务来调用第二个 .then() 回调函数。

因此,在解析第一个 promise 之前,第二个 promise 的第一个回调函数已经添加到了微任务队列中。当两个 promise 都解析完成后,微任务队列中的微任务按添加顺序依次执行。

在第二个 promise 中,.then() 回调函数是链式调用的。每个回调函数都添加了一个微任务到微任务队列中。因此,当它们解析完成后,微任务队列中的微任务按添加顺序执行。

以上就是Promise.resolve() 链式调用中,输出顺序是怎样的?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1497504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 19:35:03
下一篇 2025年12月19日 19:35:13

相关推荐

发表回复

登录后才能评论
关注微信