有线承诺嵌套.then处理程序顺序

时间:2018-10-03 10:20:56

标签: javascript promise asynccallback

我最近在学习诺言,当我在玩的时候。后来我发现自己无法解释自己在这段代码中发现的内容...我知道我们应该避免使用嵌套嵌套,因为的优势之一。然后不再是回调地狱。但是在这种情况下,我只想检查然后处理的顺序,我就被卡住了。

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。

有人可以给我一些提示吗?非常感谢。

0 个答案:

没有答案