关于promise原型上的then()方法的执行顺序的问题
- 为什么是这样的执行顺序,希望能够详细解释下
Promise.resolve("foo")
.then(function(string) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
string += 'bar';
resolve(string);
}, 1);
});
})
.then(function(string) {
setTimeout(function() {
string += 'baz';
console.log(string);
}, 1)
return string;
})
.then(function(string) {
console.log("sssss");
console.log(string);
});
// 执行顺序
// ssss
// foobar
// foobarbaz
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
这里涉及到event loop里面的宏任务与微任务
如果不了解可以先看看这篇文章:https://juejin.im/post/5b498d...
了解完后我们现在应该能知道: promise.then属于微任务,setTimeout属于宏任务
下面开始解答:
第一步:
第二步:
第三步:
第四步:
第五步:
第六步:
因此输出顺序为:
sssss
foobar
foobarbaz
问题答得不多,所以语言组织方面可能不太通顺,望见谅,希望我的解答能帮到你