Javascript 将setInterval与异步函数一起使用可能需要比间隔时间更长的时间

Javascript 将setInterval与异步函数一起使用可能需要比间隔时间更长的时间,javascript,node.js,Javascript,Node.js,有没有办法使用setInterval使异步函数保持有序?例如,如果您正在进行某种IO连接,并且所用的时间比您设置的间隔时间要长,则会使事情有点混乱。我可以增加间隔时间,希望能覆盖它,但这还不够确定 代码如下所示: var sqlID = setInterval(function(){ console.log('Attempting to reconnect to sql...'); dbHandler.connectSQL(sql, connStr, function(sqlco

有没有办法使用setInterval使异步函数保持有序?例如,如果您正在进行某种IO连接,并且所用的时间比您设置的间隔时间要长,则会使事情有点混乱。我可以增加间隔时间,希望能覆盖它,但这还不够确定

代码如下所示:

var sqlID = setInterval(function(){
    console.log('Attempting to reconnect to sql...');
    dbHandler.connectSQL(sql, connStr, function(sqlconnect){
        conn = sqlconnect;
        if (conn != false){
            clearInterval(sqlID);
        }
    });
}, 10000);

如果您想让他们排队,您可以在没有承诺/延期的情况下:

function tryToConnectIn10Seconds(){
   setTimeout(function(){
     console.log('Attempting to reconnect to sql...');
     dbHandler.connectSQL(sql, connStr, function(sqlconnect){
        conn = sqlconnect;
        if (conn != false){
            //Done. Do something with conn
        }else{
            tryToConnectIn10Seconds();
        }
     });
   }, 10000);
}

干杯

好的异步函数是。。。async,这意味着它们将在执行运行时之外执行并返回,但在完成时并不是什么事情。您想要实现的是某种程度上与异步函数相反的功能。对,但我只是想知道是否有一种方法可以管理它们。也许是一个队列或什么的。你可以使用承诺/延迟,因为上面提到的承诺/延迟是一种方法,尽管如此,你传递的第三个参数是一个成功的回调,为什么不依赖它呢?使用包装函数每次都用setTimeout重新调用函数。这样,您可以重新安排、重新间隔、取消、延迟等,而无需任何流处理。