ajaxでリトライ処理
done、failでの方法が見つからなかったので自分なりにかいてみました。
jQuery等の読み込み部分は省略します。
下記の実装だと、最初の通信を含め計4回通信を行って、
タイムアウト時間は1秒、2秒、4秒、8秒になっています。
retry.js
var time = 1000;
var request_cnt = 0;
const request = function(){
$.ajax({
url: 'htt://xxx.php',
type: 'get',
timeout: time,
data: {
//data
}
}).done(function (response){
// 成功時の処理
}).fail(function (jqXHR, textStatus){
// リトライ処理
if(textStatus === 'timeout' && request_cnt < 3){
time = time*2;
request_cnt++;
return request();
}
});
}
request();
ajaxを触ったのはこれが初めてなので、もっといい方法がありましたら、ご教授いただけると幸いです。