Ajax 轮询 - 超时立即触发
Ajax polling - Timeout firing with no delay
我使用 Ajax 轮询我的 IIS/ASP 服务器。我调用了一次 msgPoll(""),然后当我跟踪轮询代码时,我发现 msgPoll 被重复调用,而不是每 30 秒调用一次。我做错了什么?
var msgTimOut;
function msgPoll(text) {
var msgData = {};
msgData.UID = $("#hidUID").val();
msgData.data = text;
$.ajax({
type: "POST",
url: "WSWebJudge.asmx/MsgPoll",
cache: false,
data: JSON.stringify(msgData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
resp=JSON.parse(data.d);
if (resp.status == 1) setMsg(resp.msg);
if (msgTimOut) clearTimeout(msgTimOut);
msgTimOut = setTimeout(msgPoll(""), 3000);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Messaging - textStatus: " + textStatus + " errorThrown: " + errorThrown);
}
});
}
setTimeout(function(){msgPoll("")}, 30000)
- 你有 3 秒而不是 30 秒
- 在功能块中调用它 - 请参阅 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout 了解更多讨论。
我使用 Ajax 轮询我的 IIS/ASP 服务器。我调用了一次 msgPoll(""),然后当我跟踪轮询代码时,我发现 msgPoll 被重复调用,而不是每 30 秒调用一次。我做错了什么?
var msgTimOut;
function msgPoll(text) {
var msgData = {};
msgData.UID = $("#hidUID").val();
msgData.data = text;
$.ajax({
type: "POST",
url: "WSWebJudge.asmx/MsgPoll",
cache: false,
data: JSON.stringify(msgData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
resp=JSON.parse(data.d);
if (resp.status == 1) setMsg(resp.msg);
if (msgTimOut) clearTimeout(msgTimOut);
msgTimOut = setTimeout(msgPoll(""), 3000);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Messaging - textStatus: " + textStatus + " errorThrown: " + errorThrown);
}
});
}
setTimeout(function(){msgPoll("")}, 30000)
- 你有 3 秒而不是 30 秒
- 在功能块中调用它 - 请参阅 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout 了解更多讨论。