如何从一个本身使用promise的函数返回promise?

时间:2016-09-29 10:28:03

标签: javascript node.js promise

我想要做的基本上是

function test() {
getSomeValue().then(function (data) {
    //process data
});
}

function getSomeValue() {
//do some long process 
return new Promise(function (resolve, reject) {
    resolve(result);
});
}

function getSomeOtherValue() {
//do some long process 
return new Promise(function (resolve, reject) {
    resolve(result);
});
}

函数测试调用一个返回promise的函数,然后对返回的数据执行一些计算。这部分工作正常。现在,函数getSomeValue需要调用另一个也返回promise的函数。如何从getSomeValue返回也等待getSomeOtherValue完成的承诺。

如果需要任何其他信息,请告诉我。

3 个答案:

答案 0 :(得分:2)

在getSomeValue之前从getSomeOtherValue获取值,只需先调用getSomeOtherValue函数,然后用另一个函数链接来处理getSomeValue的值,最后,将结果返回给调用者(测试函数)

function getSomeValue() {
  //do some long process 
  return getSomeOtherValue().then(function(resultFromSomeOtherValue) {
    return new Promise(function (resolve, reject) {
      var result = true; //some value after process;
      return resolve(result);
    });
  });
}

答案 1 :(得分:1)

您可以在.underbar { bottom:0; width:100%; height:60px; padding:0px; margin:0px; background:#000000; position:fixed; }内链接<footer class="underbar"> </footer>

getSomeOtherValue

如果您想要切换订单,那么:

getSomeValue

但是,这仅用于说明。您可以设计承诺,以便在更高层次上有效地链接它们:

function getSomeValue() {
    //do some long process 
    return new Promise(function (resolve, reject) {
        resolve(result);
    }).then(getSomeOtherValue);
}

答案 2 :(得分:1)

要等待getSomeOtherValue函数解析,您需要从getSomeValue函数中解析返回的promise中的getSomeOtherValue函数的承诺。希望下面的代码有意义

function test() {
getSomeValue().then(function (data) {
    //process data
});
}

function getSomeValue() {
//do some long process 
return new Promise(function (resolve, reject) {
  getSomeOtherValue().then(function (data) {
      resolve(result);
  });        
});
}

function getSomeOtherValue() {
//do some long process 
return new Promise(function (resolve, reject) {
    resolve(result);
});
}