如何在nodejs中创建具有延迟的while循环

时间:2017-09-23 01:19:54

标签: javascript node.js

我们说我有这个伪代码:

var STATUS = '';
while (STATUS !== "SUCCEEDED") {
    STATUS = getStatus();
    anotherFunc();
    delay(3s);
}

此代码的目标是继续调用api来检查某事物的状态,api返回IN_PROGRESS或SUCCEEDED。所以我希望while循环继续调用getStatus()来获取STATUS的值并在SUCCEEDED时打破循环。我还想在每次迭代之间加一个延迟。

使用Nodejs无法轻松完成。所以请帮帮我。

2 个答案:

答案 0 :(得分:2)

你甚至不需要一个while循环,只需使用setInterval()并在回调检查中是否满足您的条件以清除创建的间隔。

var STATUS = '',
    idx = setInterval(function() {
        STATUS = getStatus();
        if (STATUS === "SUCCEEDED") { // I guess you wanted a check for STATUS instead of VAR
            return clearInterval(idx);
        }
        anotherFunc();
    }, 3000); // the interval when to call the function again 3000ms = 3sek

答案 1 :(得分:0)

您可以使用setInterval在延迟时间内继续做某事。它接受一个可以用来进行api呼叫的功能,但在你进行呼叫之前,你应该检查最后一次呼叫是否成功。

一旦通话成功,您可以清除间隔。

https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args