私は自分のプロジェクトでバックボーンを使用しており、外部 API への通信と統合されています。レコードのリアルタイム更新を使用したい。私はこの外部アプリケーションのメイン バックエンドにアクセスできず、websocket サーバーもロング ポーリング エンドポイントも提供しないため、基本的には setInterval と 50 秒の期間で定期的なポーリングを行うオプションが残されています。 . それはかなりうまくいっています。私の問題はエッジケースです。何らかの理由で API リクエストが 50 秒以上ハングした場合、たとえば、新しいリクエストをすぐにトリガーします。つまり、現在 2 つの保留中の要求があり、最終的に合計されます。リクエストのタイムアウトを設定する方法はありますか? すべてのリクエストが Backbone.sync につながることは知っていますが、ソース コードをチェックしていたのですが、そうではありません。XmlHttpRequest のタイムアウトを設定する実行可能な方法はありません。これをきれいに、動作を上書きせずに行う方法はありますか? または、他の解決策/回避策はありますか?
8755 次
1 に答える
22
引数にtimeout:milliseconds
オプションを渡すだけです。オプションは、低レベルのXHR呼び出しを処理するjQuery.ajaxに直接渡されます。options
fetch
collection.fetch({timeout:50000});
または、アプリケーションの起動時にjQuery.ajaxSetupを呼び出すことにより、アプリケーションによって行われたすべてのリクエストにグローバルタイムアウトを設定できます。
$.ajaxSetup({timeout:50000});
于 2013-01-18T18:49:15.250 に答える