Как запустить функцию Javascript в интервале, который начинается в конце выполнения обратного вызова? - PullRequest
1 голос
/ 20 января 2020

Я запускаю функцию в Javascript асинхронно, используя функцию setinterval.

myVar = setInterval(myTimer, 5000);

Выполнение функции myTimer может быть довольно долгим, иногда дольше, чем указанная задержка, в этом случае интервалы просто быть казненным спиной к спине. Я хотел бы, чтобы следующее выполнение функции обратного вызова было запланировано в связи с окончанием выполнения предыдущего. Чтобы повторить, я хочу, чтобы функция myTimer запускалась через 5000 мс после завершения предыдущего, и хотела, чтобы это повторилось.

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Да, это можно сделать, используя setTimeout.

function myTimer(){
   console.log("Exec func");
   // Rest of the functionality here
   setTimeout(myTimer, 5000);
}

myTimer();
0 голосов
/ 20 января 2020

Вы можете сделать что-то подобное:

function longFunction() {
  // Do your stuff here
}

var taskId;

function task() {
  longFunction();
  taskId = setTimeout(task, 5000);
}
...