【发布时间】:2017-04-12 07:45:18
【问题描述】:
我有一个功能如下:
function foo(args1, args2, retry)
{
if (retry <= 0)
return false;
var isDone = callAnotherFunction(args1, args2);
if(!isDone) {
setInterval(function () {
foo(args1, args2, retry-1);
},
2000);
}
else
return true;
}
所以我不确定上面的实现是否正确。但是我需要在另一个函数中使用这个函数。并在 if 块中使用上述函数来决定是否需要执行另一条语句。下面是上述函数的用法。
function useIt(args1, args2)
{
// Other code
let store = function() {
if(!foo(args1, args2, 5)) {
cleanStorage(args1, args2);
return;
}
}
所以问题在于函数useIt(),如果我使用setInterval 或setTimeOut,cleanStorage() 不会等待foo() 被执行。那么我需要如何实现函数 foo() 呢?请帮助我。
【问题讨论】:
-
为什么需要等待(使用
setInterval)? -
我正在使用
setInterval,在发生故障时我可以重试,并在重试之间添加延迟。 -
虽然你在标题中说过“同步”,但我会看看将函数
foo设置为 promise 这样你就可以等待来自foo的结果useIt函数 -
我不确定为什么会有反对票,因为我找不到任何重复的问题。请添加评论,说明为什么该问题被否决。
标签: javascript node.js promise settimeout setinterval