承诺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; }