【发布时间】:2017-03-17 15:54:12
【问题描述】:
所以过去几天我一直在使用 Promise,只是尝试转换一些项目以使用 Promise,但我多次遇到这个问题。
在阅读文章和教程时,一切看起来都很流畅和干净:
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(...
我有两个主要问题:
- 我发现自己在
then回调中添加了很多if条件。 - 即使我已经完成了(
serveToClient),我仍在进入下一个then回调
我是否遵循正确的模式?
【问题讨论】:
-
尝试异步/等待,如果它变得更容易,在节点 7 中可用
标签: javascript promise es6-promise