【发布时间】:2020-01-16 09:34:23
【问题描述】:
我不明白为什么我们执行这段代码会产生如此奇怪的结果。
为什么没有 12121212 的图像?在每个 1 之后,我们有三个 2。
Promise.resolve()
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); })
.then(() => { console.log(1); return Promise.resolve(); });
Promise.resolve()
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); })
.then(() => { console.log(2); });
【问题讨论】:
-
可能与
new Promise必须首先解包有关 -
两个promise链异步运行,无法预测它们各自解析的顺序。
-
它们都是微任务。并将在微任务阶段解决。只需查看微任务即可了解所有内容。
标签: javascript promise