12

私は自分のプロジェクトでバックボーンを使用しており、外部 API への通信と統合されています。レコードのリアルタイム更新を使用したい。私はこの外部アプリケーションのメイン バックエンドにアクセスできず、websocket サーバーもロング ポーリング エンドポイントも提供しないため、基本的には setInterval と 50 秒の期間で定期的なポーリングを行うオプションが残されています。 . それはかなりうまくいっています。私の問題はエッジケースです。何らかの理由で API リクエストが 50 秒以上ハングした場合、たとえば、新しいリクエストをすぐにトリガーします。つまり、現在 2 つの保留中の要求があり、最終的に合計されます。リクエストのタイムアウトを設定する方法はありますか? すべてのリクエストが Backbone.sync につながることは知っていますが、ソース コードをチェックしていたのですが、そうではありません。XmlHttpRequest のタイムアウトを設定する実行可能な方法はありません。これをきれいに、動作を上書きせずに行う方法はありますか? または、他の解決策/回避策はありますか?

4

1 に答える 1

22

引数にtimeout:millisecondsオプションを渡すだけです。オプションは、低レベルのXHR呼び出しを処理するjQuery.ajaxに直接渡されます。optionsfetch

 collection.fetch({timeout:50000});

または、アプリケーションの起動時にjQuery.ajaxSetupを呼び出すことにより、アプリケーションによって行われたすべてのリクエストにグローバルタイムアウトを設定できます。

$.ajaxSetup({timeout:50000});
于 2013-01-18T18:49:15.250 に答える