问题描述
我使用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。