所以我一直在玩承諾的最後幾天,只是試圖轉換一些項目,使用承諾,但超過了幾次我已經把這個問題包攬了。
在閱讀文章和教程,一切看起來光滑潔淨:承諾多路流的正確模式
getDataFromDB()
.then(makeCalculatons)
.then(getDataFromDB)
.then(serveToClient)
但在現實中,它不是這樣的。
程序有很多的「如果條件」改變了整個流程:
getDataFromCache(data).then(function(result){
if(result){
return result;
}else{
return getDataFromDB();
}
}).then(function(result){
if(result){
serveToClient() //this does not return a promise, so undefined returned...
}else{
return getDataFromWebService(); //this does return a promise,
}
}).then(function(result){
//i dont want to reach here if i already serveToClient()...
//so i basically have to check "if(result)" for all next thens
if(result){
//do more stuff
}
}).then(...
我有2個主要問題:
- 我發現自己增加對
then
回調if
條件很多。 - 我仍然得到進入下一個
then
回調,即使我已經完成(serveToClient
)
我是按照正確的方式?
嘗試異步/等待,如果它變得更容易,節點7中可用 – Endless