Javascript 如何串联承诺
我想在一系列的承诺链,以便使3个承诺执行。我不想嵌套这些函数。我尝试向它添加一个解析,但它似乎在函数内部的所有操作完成之前就解析了Javascript 如何串联承诺,javascript,promise,Javascript,Promise,我想在一系列的承诺链,以便使3个承诺执行。我不想嵌套这些函数。我尝试向它添加一个解析,但它似乎在函数内部的所有操作完成之前就解析了 function first(){ var promise = new Promise(function(resolve, reject){ console.log('fetchToken 1'); }); return promise; } function second(item){ var promise = new
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,以解决承诺
函数优先(){
var承诺=新承诺(功能(解决、拒绝){
log('fetchToken 1');
解决();
});
回报承诺;
}
第二职能(项目){
var承诺=新承诺(功能(解决、拒绝){
log('fetchToken 2');
解决();
});
回报承诺;
}
第三职能(项目){
var承诺=新承诺(功能(解决、拒绝){
log('fetchToken 3');
解决();
});
回报承诺;
}
函数getTokenGroup(){
函数logTaskError(e){
控制台错误(e);
抛出e;//拒绝当时返回的承诺
}
var task1=first();
var task2=task1.then(第二);//为什么要返回新的承诺
var task3=task2。然后(第三个);
var alltasks=task3.then(null,logTaskError);
返回所有任务;
}
getTokenGroup()代码>您需要解析承诺,否则它将不会进一步传播
您需要呼叫“解决”:
你为什么不打电话给Resolve?你的承诺没有一个得到解决(或拒绝)——那么,当然什么都没有发生——我把Resolve放在哪里?在函数内部?您知道这不会记录fetchToken 3吗
function first(){
return new Promise(function(resolve, reject){
console.log('fetchToken 1');
resolve('your data');
})
}
function first(){
var promise = new Promise(function(resolve, reject){
console.log('fetchToken 1');
resolve(1); //==> call this one, parameter in here is just a sample
});
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();