我想串联一系列 Promise,以便按顺序执行 3 个 Promise。我不想嵌套函数。我尝试向其中添加解析,但似乎它在函数内部的所有内容完成之前解析。
function first(){
var promise = new Promise(function(resolve, reject){
console.log('fetchToken 1');
});
return promise;
}
function second(item){
var promise = new Promise(function(resolve, reject){
console.log('fetchToken 2');
});
return promise;
}
function third(item){
var promise = new Promise(function(resolve, reject){
console.log('fetchToken 3');
});
return promise;
}
function getTokenGroup() {
function logTaskError(e) {
console.error(e);
throw e; // reject the Promise returned by then
}
var task1 = first();
var task2 = task1.then(second);
var task3 = task2.then(third);
var alltasks = task3.then(null, logTaskError);
return alltasks;
}
getTokenGroup();
最佳答案
在函数内部调用resolve,以便 promise 得到解决
function first() {
var promise = new Promise(function(resolve, reject) {
console.log('fetchToken 1');
resolve();
});
return promise;
}
function second(item) {
var promise = new Promise(function(resolve, reject) {
console.log('fetchToken 2');
resolve();
});
return promise;
}
function third(item) {
var promise = new Promise(function(resolve, reject) {
console.log('fetchToken 3');
resolve();
});
return promise;
}
function getTokenGroup() {
function logTaskError(e) {
console.error(e);
throw e; // reject the Promise returned by then
}
var task1 = first();
var task2 = task1.then(second); // why return new promise
var task3 = task2.then(third);
var alltasks = task3.then(null, logTaskError);
return alltasks;
}
getTokenGroup();
或者更好,因为可以使用 then
继续第一个 promise
function first() {
console.log('fetchToken 1');
}
function second(item) {
console.log('fetchToken 2');
}
function third(item) {
console.log('fetchToken 3');
}
function getTokenGroup() {
function logTaskError(e) {
console.error(e);
throw e; // reject the Promise returned by then
}
var promise = Promise.resolve(0); // create a resolved promise
var task1 = promise.then(first);
var task2 = task1.then(second);
var task3 = task2.then(third);
var alltasks = task3.then(null, logTaskError);
return alltasks;
}
getTokenGroup();
关于javascript - 如何串联 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43578221/