【问题标题】:firefox addon-sdk : handle http request timeoutfirefox addon-sdk : 处理 http 请求超时
【发布时间】:2013-04-04 12:12:43
【问题描述】:
【问题讨论】:
标签:
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 状态代码)。