如果node.js中发生错误,请重复此功能

时间:2015-08-25 15:58:01

标签: javascript node.js

我想在node.js中调用一个函数,但很可能这个函数在回调函数中会有错误,我想知道重复这个函数编号的最佳方法。

这种方式是好的还是有更好的?

var numberOfRetrials = 0;
do{
    send_bus(15, function(err){    // send_bus is synchronus function
        check = err;
    });
    numberOfRetrials++;
} while( (check != null) && (numberOfRetrials <3) );

2 个答案:

答案 0 :(得分:2)

尝试:

var numberOfRetrials = 0;

var task = function () {
    send_bus(15, function(err){
        if(err && numberOfRetrials++ <3){
            task();
        }
    });
};
task();

这适用于同步或异步任务功能。它是一个递归函数,具有基于计数器的退出条件。

答案 1 :(得分:1)

真的,因为它看起来与我异步。我不会把逻辑放在一个循环中:

var count = 0;
function cb(err) {
    if (!err && count < 3) {
        count++;
        send_bus(15, cb);
    }
}
send_bus(15, cb);