У меня есть код.jquery не запускает одну и ту же функцию дважды в одно и то же время
setInterval(somefunc, 1000);
function somefunc() {
curid = $(".chat-message:last").attr("id");
$.post("http://blah.com/blah.php&last_msg_id=" + curid, function (data) {
$('.chat-messages').append(data);
});
}
function saveChat() {
var texts = $('#chatText').val();
var request = $.ajax({
type: "POST",
url: "http://blah.com/submit.php",
data: {
text: texts
},
dataType: "html"
});
request.done(function (msg) {
somefunc();
});
}
Проблема заключается в том, что иногда saveChat выполняется в то же время, как интервал и информация SomeFunc добавляет к .chat-сообщения дубликатов. Как я мог избежать этого? Мне нужна функция, которая позволяет снова выполнить функцию somefunc() только тогда, когда предыдущее выполнение somefunc() полностью завершено. Или просто не позволять выполнять функцию somefunc() дважды в одно и то же время.
Я думаю, что было бы лучше, чтобы пересмотреть вашу концепцию. – kidwon
В javascript ничего не происходит в одно и то же время, оно однопоточное. –
, но jquery недостаточно быстрый, чтобы добавлять данные до того, как somefunc снова запустится. –