Promise Retry Design模式
返回新的承諾(函數(解決,拒絕){ var錯誤; var嘗試= function(){ if(times == 0){ 拒絕(錯誤); } 別的 { fn()。然後(解決) .catch(函數(e){ 時代 - ; 錯誤= e; setTimeout(function(){trib()},delay); }); } }; 試圖(); }); }; 模式#2:重試直到條件相遇 work.publish() 。 返回新的承諾(函數(解決,拒絕){ var Intervelid = setInterval(function(){ work.requeststatus(結果)。 switch(result2.status){ 案例“進度”:中斷; //什麼也不做 案例“成功”:clear Interval(Intervalid);解析(結果2);休息; 情況“失敗”:clear Interval(Intervalid);拒絕(結果2);休息; } })。捕獲(function(error){clear Interval(IntervalId); recond(errir)}); },1000); }); })) 。 。它僅指定重試之間的延遲。
使用.catch()鏈函數refffectdelay(quasence){ 返回新的承諾(函數(解決,拒絕){ settimeout(recult.bind(null,原因),t); }); }
直到解決,並使用延遲這些模式為異步操作實現重試邏輯提供了多功能方法。是否使用.catch()或.then()鏈取決於要求,例如內存使用和最大嘗試數量。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3