在Dojo中为xhr请求设置默认的应用程序范围超时(以便JsonRest调用也受到影响)

时间:2012-08-05 03:09:34

标签: json dojo

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

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

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

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

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是一些好的Monkey Patching

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映射到您自己的模块。