2017-04-15 10 views
0

ウェブアプリケーションでは、REST APIを呼び出すときにタイムアウトの状況を処理しようとしています。ここにjQuery ajaxを使ってAPIを呼び出すコードがあります。JavascriptのブラウザでHTTPリクエストのタイムアウトを処理する

$.ajax({ 
      type: "POST", 
      url: endpoint, 
      data: payload, 
      dataType: dataType, 
      timeout: 0, 
      success: successHandler, 
      error: failureHandler 
     }); 

成功と失敗のハンドラを以下に示します。タイムアウトは、サーバーで発生した場合

function successHandler(data) { 
    //Got the data 
} 

function failureHandler(xhr, textStatus, thrownError) { 
    if(xhr.status==404) { 
     console.log('Page not found'); 
    } else if(xhr.status==408) { 
     console.log('request timed out at server. You may want to retry') ;  
    } 
} 

、それは、時々、ネットワークの接続の問題をステータス408を与えています。しかし、でサービスに接続できないため、クライアント(ブラウザ)自体はタイムアウトしつつあります指定時刻。私はこれがブラウザの動作だと思います。要求がブラウザによってタイムアウトになった場合、xhr.statustextStatusは何ですか?このシナリオをどのように処理するのですか?

[編集] Set timeout for ajax (jQuery)の説明があります。これは、コードのタイムアウトを設定する方法を説明しています。しかし、私の質問は、このようなタイムアウトを設定したくないということです。 ajaxリクエストのコードを確認して、私はtimeout: 0を設定します。つまり、タイムアウトはありません。サーバからの応答が来るまで待つつもりです。一方、ブラウザーは、グローバルタイムアウト設定のためにこの要求を強制終了する可能性があります。私はこれを処理できる解決策を探しています。

+1

[AJAX(XmlHttpRequest)コールのタイムアウトをブラウザで検出する方法は?](http://stackoverflow.com/questions/1018705/how-to-detect-timeout-on-an- ajax-xmlhttprequest-call-in-the-browser) – APerson

+0

なぜこの質問が異なるのですか? –

答えて

関連する問題