除非函数的工作完成,否则避免重复调用函数

Avoid Calling a function repeateadly unless its job is finished

本文关键字:函数 调用 工作      更新时间:2023-09-26

我有一个函数需要在5秒的时间间隔后调用。此功能在后台处理AJAX请求(请求会转到其他网站,因此可能需要几秒钟时间)。功能如下:

function myFunction() {
    var sendData = {
        cid: cid
    };
    $.post('xyz.com/somepage.php', sendData, function(response) {
        //processes the response
    });
    setTimeout(myFunction, 5000); //call again after 5 seconds
}

我需要考虑一个事实,即一些用户的互联网连接可能较慢,请求可能需要5秒以上的时间。所以,我需要避免再次调用该函数(或者我们说避免发送请求),直到它的工作完成。我在这个链接上尝试了上一段中给出的方法,但没有奏效。有什么建议吗?谢谢

您可以在完成ajax调用时调用该函数

function myFunction() {
    var sendData = {
        cid: cid
    };
    $.post('xyz.com/somepage.php', sendData, function(response) {
        //processes the response
    }).done(function() {
        setTimeout(myFunction, 5000); //call again after 5 seconds
    });
}

setTimeout调用放在回调处理程序中:

function myFunction() {
    $.post('xyz.com/somepage.php', { cid: cid }, function(response){
        //processes the response
        setTimeout(myFunction, 5000);//call again after 5 seconds
    });
}