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

Javascript 如何从本身使用promise的函数返回promise?,javascript,node.js,promise,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() { //

我想做的基本上是

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);
});
}
Function test调用一个函数,该函数返回一个承诺,然后对返回的数据执行一些计算。这部分很好用。现在函数getSomeValue需要调用另一个函数,该函数也返回一个承诺。如何从getSomeOtherValue返回一个承诺,该承诺也会等待getSomeOtherValue完成

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

您可以将getSomeOtherValue链接到getSomeValue中:

如果您希望切换订单,则:

function getSomeValue() {
    //do some long process 
    return getSomeOtherValue().then(function () {
        return new Promise(function (resolve, reject) {
            resolve(result);
        });        
    }
}
然而,这仅用于说明。您可以设计您的承诺,以便在更高的层次上有效地链接它们:

function test() {
    getSomeOtherValue()
        .then(getSomeValue)
        .then(function (data) {
            //process data
        });
}
要等待解析getSomeOtherValue函数,需要解析getSomeOtherValue函数返回的承诺中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);
});
}

要在getSomeOtherValue之前从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);
    });
  });
}

您可以进行链接,.then.then….实际上,在调用getSomeOtherValue之前需要调用它。我需要来自getSomeOtherValue的数据,然后根据添加的解释生成响应
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);
    });
  });
}