如何解决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)
- 您有3秒而不是30秒
- 在功能块中调用它-有关更多讨论,请参见https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。