var log = function(res) {
console.log(res);
}
var p1=new Promise(function (resolve,reject){
var p1 = 1;
if(p1==1) resolve("p1 resolve");
else reject("p1 failed");
});
var p2=new Promise(function(resolve,reject){
var p2=2;
if(p2==2) resolve("p2 resolve");
else reject("p2 reject");
});
var p3=new Promise(function(resolve,reject){
var p3=3;
if(p3==3) resolve("p3 resolve");
else reject("p3 reject");
});
p1.then(
function(res){
log(res);
p2.then(function(res){
log(res);
p3.then(function(res){
log(res);
});
});
});
结果:
p1 resolve
p2 resolve
p3 resolve
而当把连续的.then调用改为:
p1.then(p2).then(p3).then(function(res){log(res)});
后,结果为:
p1 resolve
由此可推断,then的结果,只由最外层第一个调用它的promise对象决定,与之后调用的其他promise对象无关
为了证实这一假设,实验如下:
p2.then(p3).then(p1).then(function(res){log(res)});的结果为:
p2 resolve
p3.then(p2).then(p1).then(function(res){log(res)});的结果为:
p3 resolve