この xhrWithRetry メソッドを作成しました。
目的: サービス呼び出しがエラー コード 500 で失敗した場合に備えて、この util メソッドは数回再試行します。各再試行は、数ミリ秒遅れる必要があります。
私のテストでは、
- 呼び出し元のコードで、最大再試行後に最後にスローされた例外をキャッチできます。
- コードは、エラーのないシナリオでも機能します。
この質問は主に、同じ非同期関数を記述するための大幅に優れた方法があるかどうかを確認するためのものです。
WinJS.Namespace.define('Utils.Http',
{
xhrWithRetry: function xhrWithRetry(options, retryCount)
{
var maxRetries = 5;
if (retryCount == undefined)
retryCount = 0;
return WinJS.xhr(options).then(null, function onerror(error)
{
if (error.status == 500 && retryCount < maxRetries)
return WinJS.Promise.timeout(100).then(function retryxhr()
{
return Utils.Http.xhrWithRetry(options, retryCount + 1);
});
throw error;
});
}
});