承诺Js:等待承诺履行

我正在与Bluebird在Node.Js中做出承诺,并想知道如何在履行承诺(完成)时作出函数返回。我想要的行为是:

function getItem(){ functionReturningPromise.then(function(result){ //do some operation on result return result; }); } 

但是,上述实现不会返回任何东西,因为承诺在执行时没有完成。 什么是最好的解决方法呢?

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

你不能, var value = someAsyncFunction()是不可能的(直到我们有发生器,至less)。 承诺是病毒式的,一旦你在一个函数中使用Promise,它的调用者就必须使用它和调用者的调用者等,直到你的主程序。 所以,在调用getItem的函数中,你必须改变它

 item = getItem(); do something with item 

进入这个

 getItem().then(function(item) { do something with item }) 

getItem应该返回一个Promise

 function getItem(){ return functionReturningPromise().then(function(result){ //do some operation on result return result; }); } 

(理论上它也可以是一个callback,但我更愿意总是返回承诺)。

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

那么,我认为你可以简单的做

 functionReturningPromise.then(getItem); 

哪里

 function getItem(valueFromPromiseResolution){ //do some operation on valueFromPromiseResolution return whatever; }