jquery不会同时运行两次相同的函数

Min*_*kas 0 ajax 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();
    });
}
Run Code Online (Sandbox Code Playgroud)

问题是有时候saveChat会在间隔的同时执行,而somefunc会附加信息.chat-messages重复.我怎么能避免它?我需要一个允许仅在somefunc()的先前执行完全完成时再次执行somefunc()函数的函数.或者只是不允许同时执行somefunc()函数两次.

Exp*_*lls 5

不要使用setInterval,但巢setTimeout:

setTimeout(somefunc, 1000);
function somefunc() {
    //snip
    $.post().done(function () { setTimeout(somefunc, 1000); });
}
Run Code Online (Sandbox Code Playgroud)