Hi I\'m stuck on my setTimeout function. What i\'m trying to do is to loop my setTimeout for my retrieve conversation function.. I have tried this on setInterval but using s
Put the code in a function and call it in the success or complete handler:
function load() {
setTimeout(function () {
$.ajax({
url: "includes/handlechat.php",
type: "GET",
data: data,
dataType: 'json',
success: function (result) {
$("#clog").empty();
$.each(result, function (rowKey, row) {
$("#clog").append('<p ><h4>' + row.username + ':</h4>' + row.message_content + '</p>');
});
},
complete: load
});
}, 1101);
}
load();
You can also use an IIFE to avoid creating another binding in the current environment:
(function load() {
// setTimeout here
}());
I'd do something like this.
function getChatMessages() {
$.ajax({
// your params here
}).done(function (data) {
// do something with the data
}).always(function () {
window.setTimeout(getChatMessages, 1101);
});
}
getChatMessages();
Purpose of the '.always' is so you don't get some error on fetching messages (timeout, some kind of 500, etc) that breaks your loop.