我想向自己解释下面使用javascript promises的代码片段的执行顺序.
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);
Run Code Online (Sandbox Code Playgroud)
结果是:
1
2 "A"
3 "B"
7 "C"
4 "B"
8 undefined
9 "D"
5 undefined
10 undefined
6
Run Code Online (Sandbox Code Playgroud)
我很好奇执行顺序1 2 3 7 ...而不是值'A','B'......
我的理解是,如果一个promise得到解决,'then'函数将被放入浏览器事件队列中.所以我的期望是1 2 3 4 ......
@ jfriend00谢谢,非常感谢您的详细解释!这真是一项巨大的工作!