1

我刚刚发现在 Dojo 中没有办法为 xhr 调用设置应用程序范围的超时。从理论上讲,我可以轻松地为 xhr 创建自己的包装器并使用它。但是,我正在使用 JsonRest 存储(目的是只使用存储与应用程序中的数据进行交互)。

令人惊讶的是,没有办法为 Dojo 中的 JsonRest 调用设置超时。

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

有没有办法重载默认的 xhr 调用而不必保留我自己的 JsonRest 副本......?例如,我可以用方面来做吗?想法/评论?

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 秒的最大超时。将 AMD 加载程序与每个模块都明确需要的基础 dojo 一起使用会有点棘手dojo/_base/xhr,但可以通过使用 dojo 加载程序的一些高级别名功能映射dojo/_base/xhr到您自己的模块来完成。

于 2012-08-05T03:31:58.583 回答