Aqui está um artigo útil sobre long polling (solicitação HTTP demorada) usando jQuery. Um snippet de código derivado deste artigo:
(function poll() {
setTimeout(function() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 2000
})
}, 5000);
})();
Isso fará a próxima solicitação somente após a conclusão da solicitação ajax.
Uma variação do anterior que será executada imediatamente na primeira vez que for chamada, antes de honrar o intervalo de espera / tempo limite.
(function poll() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: setTimeout(function() {poll()}, 5000),
timeout: 2000
})
})();
setTimeout
e outras usaramsetInterval
. Por que um seria preferido ao outro?