(function poll() {
$.ajax({
url: "/Home/Tail", success: function (data) {
console.log(data);
},
data: { datetime: getISODateTime(new Date()) },
dataType: "json",
timeout: 30000
});
})();
我有上面的代码,我正在对端点进行长时间轮询。
然而,它太快了。它不应该在每个超时秒内完成吗?
答案 0 :(得分:2)
此处然而,它太快了。不应该每次超时都这样做 秒?
timeout
属性只会超时调用,然后触发错误。如果你觉得它太快了,你必须在上面发布的代码之外做其他事情。
为了进行长轮询,一种方法是在收到回复时使用Javascript setTimeout
。此外,在这种情况下,您应该在某处找到中止。
例如(这将每3秒轮询一次):
<button id="start">Start</button>
<button id="stop">Stop</button>
var timer;
function poll() {
$.ajax({
url: "/echo/json/", success: function (data) {
console.log(data);
timer = setTimeout(poll, 3000);
},
data: { datetime: new Date()},
dataType: "json",
timeout: 30000
});
};
$("#start").on("click", function() { console.log("started.."); poll(); });
$("#stop").on("click", function() { console.log("stopped.."); clearTimeout(timer); });
答案 1 :(得分:-1)
您可以使用ajax选项中的timeout
设置,如下所示:
(function poll() {
$.ajax({
url: "/Home/Tail", success: function (data) {
console.log(data);
},
timeout: 30000,
data: { datetime: getISODateTime(new Date()) },
dataType: "json"
});
})();
阅读有关ajax选项here
的所有信息