先上结论:
在newPromise里面res另一个promise,这个promise在then里面会被【展平】。展平同样是异步的
看下面的代码:
var p3=new Promise(function(res,rej){
res('b');
});
var p1=new Promise(function(res,rej){
res(p3);
});
var p2=new Promise(function(res,rej){
res('a');
});
p1.then(function(val){
console.log(val);
});
p2.then(function(val){
console.log(val);
});
//a b
输出 a b
按异步队列,p1.then进队,p2.then进队
所以该输出的是 promise{'b'} a 对吗?
不对。then会把promise展开,所以会有第三个事件进队也就是展开p3
最终输出的是决议值,a b