在Angular项目中,我正在使用具有许多不同场景的预订系统。根据promise的响应,它应该尝试对服务器进行不同的调用。这导致了一种回调 - 我认为承诺可以阻止我的地狱:函数不会返回任何东西而是启动另一个函数。
这是一个简化的决策树:
预订
1.1(成功) - 获取预订详情
1.2(失败) - 检查errorCode
1.2.2 if(errorCode!=' soldout') *显示重试按钮。
我的代码看起来像这样:
makeBooking()
.then(function(response){
succesHandler(response);
}, function(error){
errorHandler(response);
})
succesHandler(response){
loadDetails(response)
.then(function(details){
showDetails(details);
}, function(error){
handleDetailsError(error);
}
}
errorHandler(response){
if ( checkSoldout(reponse) ){
makeAlternativeBooking();
}
}
这是一种很好的(功能)方式来使用这些嵌套的#39;承诺?
答案 0 :(得分:1)
您的流量在每个点都有分歧,对您的代码无需进行太多更改,除了它可以略微缩短,如:
makeBooking().then(succesHandler, errorHandler)
succesHandler(response){
loadDetails(response)
.then(showDetails, handleDetailsError)
}
errorHandler(response){
if ( checkSoldout(reponse) ){
makeAlternativeBooking();
}
}