我最近在学习诺言,当我在玩的时候。后来我发现自己无法解释自己在这段代码中发现的内容...我知道我们应该避免使用嵌套嵌套,因为的优势之一。然后不再是回调地狱。但是在这种情况下,我只想检查然后处理的顺序,我就被卡住了。
datarepeater
输出为:
let p2 = Promise.resolve('nested 1');
Promise.resolve ('1')
.then(function(result) {
console.log(result);
p2.then((result1)=> {
console.log(result1);
return 'nested 2'
})
.then((result2) => {
console.log(result2);
return 'nested 3'
})
.then((result3)=> {
console.log(result3);
})
})
.then(() => { console.log("2"); })
.then(() => { console.log("3"); })
.then(() => { console.log("4"); })
.catch(function(err) {
console.log(err);
});
setTimeout(()=>{console.log("5")}, 3)
console.log("6")
我不明白的是处理程序从“ 1”到“ 4”的顺序。我知道它们都是'6'之后的microTask,但是为什么微任务的顺序不是'1'=>'2'=>'3'=>'4'=>'嵌套1'=>'嵌套2'=>'嵌套3'?我使用Chrome。
有人可以给我一些提示吗?非常感谢。