1

Dojoでは、xhr呼び出しにアプリケーション全体のタイムアウトを設定する方法がないことを発見しました。理論的には、xhrへの独自のラッパーを簡単に作成して使用することができます。ただし、私はJsonRestストアを使用しています(目的は、アプリケーション内のデータと対話するためにストアのみを使用することです)。

驚くべきことに、DojoでJsonRest呼び出しのタイムアウトを設定する方法はありません。

http://mail.dojotoolkit.org/pipermail/dojo-interest/2012-April/065594.html

JsonRestの自分のコピーを保持せずにデフォルトのxhr呼び出しをオーバーロードする方法はありますか...?たとえば、アスペクトでそれを行うことはできますか?アイデア/コメント?

4

1 に答える 1

1

最も簡単な方法は、おそらく古き良きモンキーパッチです。

var old_xhr = dojo.xhr;
dojo.xhr = function(options) {
  var opts = options || {};
  opts.timeout = Math.min(opts.timeout || Number.MAX_VALUE, 1000);
  return old_xhr(options);
}

dojo.xhrこれにより、メソッドのすべてのユーザーに最大1秒のタイムアウトが適用されます。すべてのモジュールが明示的に必要とするベースレスdojoでAMDローダーを使用するのは少し難しいですdojo/_base/xhrが、dojoローダーの高度なエイリアシング機能のいくつかを使用dojo/_base/xhrして独自のモジュールにマップすることで実行できます。

于 2012-08-05T03:31:58.583 に答える