我正在使用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