コードを持っています。
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 が interval と同時に実行されることがあり、somefunc が .chat-messages に追加する情報が重複することです。どうすれば回避できますか?somefunc() の前の実行が完全に終了した場合にのみ、関数 somefunc() を再度実行できる関数が必要です。または、関数 somefunc() を同時に 2 回実行できないようにするだけです。