Qual é a ordem de execução nas promessas javascript
Gostaria de me explicar a ordem de execução do seguinte trecho que usa promessas de javascript.
Promise.resolve('A')
.then(function(a){console.log(2, a); return 'B';})
.then(function(a){
Promise.resolve('C')
.then(function(a){console.log(7, a);})
.then(function(a){console.log(8, a);});
console.log(3, a);
return a;})
.then(function(a){
Promise.resolve('D')
.then(function(a){console.log(9, a);})
.then(function(a){console.log(10, a);});
console.log(4, a);})
.then(function(a){
console.log(5, a);});
console.log(1);
setTimeout(function(){console.log(6)},0);
O resultado é:
1
2 "A"
3 "B"
7 "C"
4 "B"
8 undefined
9 "D"
5 undefined
10 undefined
6
Estou curioso sobre a ordem de execução 1 2 3 7 ... não os valores 'A', 'B' ...
Meu entendimento é que, se uma promessa for resolvida, a função 'then' será colocada na fila de eventos do navegador. Então, minha expectativa era 1 2 3 4 ...
@ jfriend00 Obrigado, muito obrigado pelas explicações detalhadas! É realmente uma enorme quantidade de trabalho!