我正在使用插件 sdk 构建一个 Firefox 插件。我需要向某个页面发出 http 请求,我想处理连接超时,但在 api 中找不到任何内容:https ://addons.mozilla.org/en-US/developers/docs/sdk/latest /modules/sdk/request.html
我实际上正在寻找的是一个回调,以防客户端无法连接到服务器。
有没有办法做到这一点?
我正在使用插件 sdk 构建一个 Firefox 插件。我需要向某个页面发出 http 请求,我想处理连接超时,但在 api 中找不到任何内容:https ://addons.mozilla.org/en-US/developers/docs/sdk/latest /modules/sdk/request.html
我实际上正在寻找的是一个回调,以防客户端无法连接到服务器。
有没有办法做到这一点?
onComplete
当请求被认为对网络完成时,SDK 请求将始终调用。这意味着onComplete
在任何情况下都会调用它,而不管请求是返回错误还是成功。
为了检测您遇到了哪个错误,您需要检查 Response 对象(传递给onComplete
函数的对象)的属性“status”(response.status
)。它保存请求的状态代码。要查找状态代码,请考虑Mozilla 开发者网络上的列表。如果响应状态为 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 状态代码)。