假设我有此伪代码:
var STATUS = '';
while (STATUS !== "SUCCEEDED") {
STATUS = getStatus();
anotherFunc();
delay(3s);
}
此代码的目标是继续调用API检查某物的状态,API返回IN_Progress或成功。因此,我希望WARY循环继续调用getStatus()
获得状态的值并在成功时打破循环。我也想在每次迭代之间延迟。
Nodejs不能轻易完成。所以请帮助我。
您甚至不需要一个时循环,只需使用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
您可以使用setInterval
在延迟上不断做某事。它接受您可以使用API调用的函数,但是在您进行呼叫之前,您应该检查最后一个电话是否成功。
呼叫成功后,您可以清除间隔。
https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args