【问题标题】:firefox addon-sdk : handle http request timeoutfirefox addon-sdk : 处理 http 请求超时
【发布时间】:2013-04-04 12:12:43
【问题描述】:

我正在使用插件 sdk 构建一个 Firefox 插件。我需要向某个页面发出 http 请求,我想处理连接超时但在 api 中找不到任何内容:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/request.html

我实际上正在寻找的是一个回调,以防客户端无法连接到服务器。

有没有办法做到这一点?

【问题讨论】:

    标签: firefox-addon firefox-addon-sdk


    【解决方案1】:

    当请求被认为对网络完成时,SDK 请求将始终调用onComplete。这意味着在任何情况下都会调用onComplete,而不管请求是返回错误还是成功。

    为了检测您遇到了哪个错误,您需要检查响应对象(传递给onComplete 函数的对象)property "status" (response.status)。它保存请求的状态代码。要查找状态代码,请考虑list on the mozilla developer network。如果响应状态为 0,则请求完全失败,用户可能处于离线状态,或者无法到达目标。

    超时可能是状态码 504 或 0。实现类似于:

    var Request = require("sdk/request");
    
    Request({
      url: "http://foo.bar/request.target",
      onComplete: function(response) {
        if(response.status==0||response.status==504) {
          // do connection timeout handling
        }
        // probably check for other status codes
        else {
          // assume the request went well
        }
      }
    }).get();
    

    我个人在请求对象上使用了一个验证函数,它返回一个数字,这取决于我是否得到了正确的响应、来自网络服务器的错误或连接问题(4xx 和 0 状态代码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多