我刚刚发现在Dojo中没有办法为xhr调用设置应用程序范围的超时。从理论上讲,我可以轻松地创建自己的xhr包装器并使用它。但是,我使用的是JsonRest存储(目的是只使用存储来与应用程序中的数据进行交互)。
令人惊讶的是,没有办法在Dojo中设置JsonRest调用的超时。
http://mail.dojotoolkit.org/pipermail/dojo-interest/2012-April/065594.html
有没有办法重载默认的xhr调用而不必保留我自己的JsonRest副本......?我可以用方面来做这件事吗?想法/评论
答案 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
映射到您自己的模块。