2017-09-23 127 views
0

比方说,我有这样的伪代码:如何创建一个while循环在的NodeJS延迟

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

这段代码的目标是保持调用API来检查什么状态时,API返回IN_PROGRESS或成功。所以我希望while循环继续调用getStatus()以获取STATUS的值,并在成功时断开循环。我也想在每次迭代之间加一个延迟。

这不能用Nodejs轻松完成。所以请帮助我。

+0

使用promise和'setTimeout()'重试重构? – nnnnnn

回答

1

你甚至不需要为一个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 
+0

由于某种原因,当我测试 – Casper

+0

时,此代码只运行一次,这将暗示getStatus()函数在第二次后返回了“SUCCEEDED”。你可以伪造'getStatus',看看什么时候没有返回“SUCCEEDED”,setInterval回调将被调用 – Kristianmitk