這是我的示例代碼。如何擺脫中間的承諾鏈
協調員首先調用了幾個輸入的工作人員,一旦得到響應,就必須驗證響應是否令人滿意。
如果滿意,只需返回給調用者。
如果不是,再次調用同一個工人或者可能是不同的工人,輸入略有不同,並按照流程。
在這裏,雖然,我的代碼調用CB()的第一個工人電話後,它也將第二則和錯誤進行「響應」未定義等。
我可以添加額外的條件檢查第一個響應是否令人滿意,就像need2ndworkercall & &然後在第二個驗證(響應)然後擺脫它。但想知道處理這個問題的正確方法是什麼。欣賞任何反饋。
function orchestrateSomething(input, cb){
doSomething(input.a, input.b)
.then(response=>{
if(validate(response)){
cb(buildResultObj(response));
}
else{
return doSomething(input.a)
}
})
.then(response=>{
if(validate(response)){
cb(buildResultObj(response));
}
else{
cb(null,{});
}
})
.catch(error=>cb(error));
}
你的Wi如果你想有條件地執行鏈的某個部分,你會想創建分支而不是直鏈。搜索「承諾分支與鏈」,你會發現許多文章(一些在stackoverflow)解釋。 – jfriend00
請參閱[multiple,sequential fetch()Promise](http://stackoverflow.com/questions/38034574/multiple-sequential-fetch-promise/) – guest271314