如果在Angular超时中返回false,则重试函数调用

时间:2019-03-27 12:20:50

标签: javascript angularjs function timeout

我是Angular的新手,并尝试实现一种逻辑,以在返回false时重试函数调用。

下面是我的代码段。

variable
  

如果它返回false,我想在100ms后再次调用此函数。

(要调用,直到返回true)

帮助我实现这一目标。

1 个答案:

答案 0 :(得分:2)

创建另一个负责检查结果的函数,并将一个timeout注册为回调。像这样的东西。

function retryFn(fn, timeout) {
  if ( fn() === false ) {
    setTimeout( () => retryFn(fn, timeout), timeout)
  }
}

您会这样称呼它

retryFn(checkHeaderPos, 100)

稍微调整一下功能,您甚至可以控制每次通话的超时时间

function retryFn(fn, timeout) {
 if ( fn() === false ) {
  setTimeout( () => retryFn(fn, timeout * 2), timeout)
 }

}

这会使重试的超时时间加倍。