如何在dojo中检测请求超时错误?由于dojo / request / notify未检测到它

时间:2016-06-27 08:03:41

标签: javascript dojo

我正在使用dojo/request/notify,以便在发现Ajax callis问题时全局检测错误。

对于调用API,我使用的是dojo/store/JsonRest。 请求失败时notify按预期工作,但如果超时notify不起作用。

我需要检测超时错误。

  • 如何使用dojo实现此结果?
  • 是否可以全局设置dojo的超时选项?

1 个答案:

答案 0 :(得分:1)

看起来dojo不提供开箱即用的选项。

我想到了以下解决方案:

  1. 编写dojo/store/JsonRest的自定义版本,其中传递timeout值。
  2. Monkey patch dojo/_base/xhr
  3. Money patch XMLHttpRequest
  4. 我选择了解决方案3.下面是一个代码示例:

     (function (xhr) {
            var send = xhr.send;
            xhr.send = function (data) {
                this.timeout = 5000;
                var hasTimeOut = 'ontimeout' in this;
                if (hasTimeOut) {
                    this.ontimeout = function () {
                        throw ('Error XMLHttpRequest timeout.');
                    };
                }
                return send.apply(this, arguments);
            };
        })(XMLHttpRequest.prototype);
    

    Related question