Повторите вызов функции, если вернет false в угловое время ожидания - PullRequest
0 голосов
/ 27 марта 2019

Я новичок в Angular и пытаюсь реализовать логику для повторного вызова функции, если она возвращает false.

Ниже приведен мой фрагмент кода.

var checkHeaderPos = function() {
  if(CONDITION) 
     return true;
  else 
     return false;
}

$timeout(function() {
      checkHeaderPos();
    }, 100);

Я хочуПовторно вызовите эту функцию снова через 100 мсек, если она вернет false.

(Хотите вызывать, пока она не вернет true)

Помогите мне добиться этого.

1 Ответ

2 голосов
/ 27 марта 2019

Создайте еще одну функцию, которая позаботится о проверке результата и зарегистрирует 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)
 }

}

Это удвоит время ожидания от повторной попытки до повторной попытки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...