假定用串接的方式循序執行:
function a(){
retrun new Promise(function(resolve, reject){
let parameterA = 'a';
resolve(parameterA);
});
}
function b(){
retrun new Promise(function(resolve, reject){
let parameterB = 'B';
resolve(parameterB);
});
}
function c(){
retrun new Promise(function(resolve, reject){
let parameterC = 'C';
resolve(parameterC);
});
}
a().then(function(){
return b();
}).then(function(parameterB){
//可取得 b() 的 return parameterB
return c();
}).then(function(parameterC){
//可取得 c() 的 return parameterC
//這裡有辦法取的 parameterB?
}).catch(function(e){
})
如果是Promise.all等功能可以統一取得回傳,但如果是串接的方式,有辦法取的前幾次promise的參數嗎,在不要用全域參數去取的情況下。
傳 object 如何?
function a(){
return new Promise((resolve, reject) => {
const ball = {};
ball.parameterA = 1;
resolve(ball);
});
}
function b(ball){
return new Promise(function(resolve, reject){
ball.parameterB = 'B';
resolve(ball);
});
}
function c(ball){
return new Promise(function(resolve, reject){
ball.parameterC = 'C';
resolve(ball);
});
}
a().then(function(ball){
return b(ball);
}).then(function(ball){
console.log(ball.parameterB); //可取得 b() 的 return parameterB
return c(ball);
}).then(function(ball){
console.log(ball.parameterC); //可取得c() 的 parameterC
console.log(ball.parameterB); //也可取得 b() 的 return parameterB
}).catch(function(e){
console.log(e);
})