firefox addon-sdk:处理http请求超时

时间:2013-04-04 12:12:44

标签: firefox-addon firefox-addon-sdk

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

我实际看的是在客户端无法连接到服务器的情况下进行回调。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:9)

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

为了检测你得到的错误,你需要检查Response对象(传递给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();

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