onComplete
リクエストがネットワークに対して完了したと見なされると、SDK リクエストは常に を呼び出します。これはonComplete
、リクエストがエラーを返したか成功を返したかに関係なく、どのような場合でも呼び出されることを意味します。
どのエラーが発生したかを検出するには、Response オブジェクト (onComplete
関数に渡されるオブジェクト)のプロパティ "status" ( response.status
) を確認する必要があります。リクエストのステータス コードを保持します。ステータス コードを調べるには、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 ステータス コード) を取得したかどうかに応じて数値を返します。