Javascript 如何串联承诺

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

我想在一系列的承诺链,以便使3个承诺执行。我不想嵌套这些函数。我尝试向它添加一个解析,但它似乎在函数内部的所有操作完成之前就解析了

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();