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

时间:2014-01-08 21:19:11

标签: javascript node.js

有没有办法使用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);

1 个答案:

答案 0 :(得分:1)

如果你想让他们排队,没有Promises / Deferreds,你可以这样做:

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);
}

干杯