如果函数内发生故障,我需要能够在node.js中重试。我已经设置了一个while循环,如下所示,但是对于如何包装函数调用以确保它不会阻塞整个服务器,我有些困惑。

我该怎么办?

while(retryCount < 10 && !success){

    // Alternative one
    while(new Date().getTime() < now + 1000) {
        myFunction();
    }

    // Or:
    setTimeout( myFunction(), 1000);
}

最佳答案

您可以在函数对象中存储尝试次数。 cronjob很好。如果在请求上下文中需要相同的行为,则必须将尝试计数器存储在请求范围内(而不是在函数对象中)。

var fnc = function() {
        console.log('try');
        if (true) { // Error condition
                // Error here
                if (!fnc.tryes) fnc.tryes = 0;
                fnc.tryes++;
                console.log(fnc.tryes);
                if (fnc.tryes <= 10) {
                        setTimeout(fnc, 1000);
                } else {
                        fnc.tryes = 0;
                }
                // Something wrong
        } else {
                // We hame result
        }
};

fnc();

关于node.js - 如何在node.js中设置setTimeout?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9768236/

10-08 21:47