Ajax轮询-超时触发,无延迟



我使用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)

  1. 你有3秒而不是30秒
  2. 在函数块中调用它-请参阅https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout以供更多讨论

最新更新