我正在使用Node.js和q库。是否有可能获得由.then()作用域之外的.resolve()返回的值?
我有一个看起来像这样的代码:
checkIfThingExists(function(idForAThing){
if(idForAThing){
updateThingData(idForAThing);
} else {
createThing(function(idForAThing){
updateThingData(idForAThing);
});
}
})
正如你可以看到我需要调用updateThingData();两次。
有没有一种方法可以使用承诺只需拨打updateThingData()
一次,例如这样的事情?当然,这并不工作,idForAThing
总是undefined
if语句运行时:
checkIfThingExists(function(idForAThing){
if(!idForAThing){
createThing().then(function(newIdForAThing){
idForAThing = newIdForAThing
})
}
updateThingData(idForAThing);
})
不,这是不可能的'then'回调之前得到的价值,这是承诺的关键所在。但是,您[可以有条件地使用承诺并进行异步](https://stackoverflow.com/a/39621747/1048572)。 – Bergi