2013-04-04 144 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狀態碼)。