私は次回のデータベースでの結果を得ようとしています。 XMLHttpRequestを使用してsetIntervalの5秒の遅延でデータを取得しました。要求のステータスが200の場合。コードは正常に動作します。ただし、ステータスが200ではない場合、clearIntervalは機能しませんが、console.logは引き続き動作します。clearIntervalがXMLHttpRequestと連携していません
var _resInterval;
_resInterval = setInterval(function() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/index.php/forms/getDDResult/" + id, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function() {
if (xhr.status === 200) {
var _resp = JSON.parse(xhr.responseText);
console.log(_resp);
if (parseInt(_resp.interval) >= 0) {
clearInterval(_resInterval);
restartGame(parseInt(_resp.interval));
}
} else {
console.log("error");
clearInterval(_resInterval);
}
};
xhr.send();
}, 5000);
UPDATE:再帰関数
function getGameResult() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/index.php/forms/getDDResult/" + id, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function() {
if (xhr.status === 200) {
var _resp = JSON.parse(xhr.responseText);
console.log(_resp);
if (parseInt(_resp.interval) >= 0 && _resp.result != "Not available") {
restartGame(parseInt(_resp.interval));
} else {
setTimeout(function() {
getGameResult();
}, 5000);
}
}
};
xhr.send();
}
私はそれを正しい方法をやっているか、私は再帰関数に変更する必要がありますか?ありがとう。
- ララ
「clearIntervalは機能しません」とはどういう意味ですか? –
@EvanTrimboliこんにちは、私の質問に時間を与えてくれてありがとう。 clearIntervalはsetIntervalを停止します。それはコードを実行して停止しません。再帰関数を使用するのがこの種の状況に適しているかどうかはわかりませんが、再帰的にはうまくいきました。いくつかのjavascriptヒーローが知識を共有するのを待っています:D –