Вложенное обещание вложено. Затем порядок обработки - PullRequest
0 голосов
/ 03 октября 2018

Я изучаю обещание недавно, и когда я играю. Затем я обнаружил, что не могу объяснить для себя, что я нашел в этом коде ... Я знаю, что тогда нам следует избегать использования вложенных, потому что это одно из преимуществ.тогда больше нет ада обратного вызова.Но в этом случае я просто хочу проверить порядок процесса, и я застрял ...

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")

вывод:

6     // current task
1
nested 1
2
nested 2
3
nested 3
4
5     //next task because of setTimout

Что я не могу понятьэто порядок обработки от '1' до '4'.Я знаю, что все они являются микрозадачами после '6', но почему они не расположены так, как '1' => '2' => '3' => '4' => 'nested 1' => 'nested2 '=>' вложенный 3 '?Я использую Chrome.

Может ли кто-нибудь дать мне несколько советов?Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...