2013-04-04 104 views

回答

9

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

为了检测你有哪些错误,您需要检查响应对象的property "status"response.status)(将传递给onComplete函数对象)。它包含请求的状态码。要查看状态代码,请考虑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状态码)。