我们说我有这个伪代码:
var STATUS = '';
while (STATUS !== "SUCCEEDED") {
STATUS = getStatus();
anotherFunc();
delay(3s);
}
此代码的目标是继续调用api来检查某事物的状态,api返回IN_PROGRESS或SUCCEEDED。所以我希望while循环继续调用getStatus()
来获取STATUS的值并在SUCCEEDED时打破循环。我还想在每次迭代之间加一个延迟。
使用Nodejs无法轻松完成。所以请帮帮我。
答案 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