承诺Js:等到承诺实现

Ash*_*are 9 javascript node.js promise bluebird

我正在使用Bluebird在Node.Js中进行承诺,并且想知道如何在履行承诺(完成)时使函数返回.我想要的行为是:

function getItem(){
  functionReturningPromise.then(function(result){
    //do some operation on result
    return result;
  });
}
Run Code Online (Sandbox Code Playgroud)

但是,由于承诺未在执行时完成,因此上述实现不会返回任何内容.围绕这个最好的解决方法是什么?

getItem的目的是修改functionReturningPromise返回的任何内容,然后返回它

geo*_*org 12

你不能,var value = someAsyncFunction()是不可能的(至少我们有发电机).Promise是病毒式的,一旦你在一个函数中使用Promise,它的调用者必须使用then调用者的调用者,等等直到你的主程序.所以,在调用的函数中getItem你必须改变它

item = getItem();
do something with item
Run Code Online (Sandbox Code Playgroud)

进入这个

getItem().then(function(item) {
    do something with item
})
Run Code Online (Sandbox Code Playgroud)

并且也getItem应该返回一个Promise

function getItem(){
  return functionReturningPromise().then(function(result){
    //do some operation on result
    return result;
  });
}
Run Code Online (Sandbox Code Playgroud)

(理论上它也可以是回调,但我更愿意总是回报承诺).