Опрос с фиксированной задержкой в ​​node.js - PullRequest
4 голосов
/ 02 декабря 2011

Я ищу способ периодически выполнять фоновое действие, когда время выполнения действия может превышать интервал опроса.

В терминах Java я бы использовал Executor.scheduleWithFixedDelay . Это гарантирует, что последующие вызовы будут вызываться только после завершения запущенной задачи, поэтому в любой момент времени выполняется только один экземпляр задачи, и он всегда будет ждать требуемый интервал перед повторным опросом.

В настоящее время мне нужно помнить, чтобы каждый вид деятельности перепланировался после завершения. Есть ли библиотека node.js / javascript, которая выполняет то же самое?

1 Ответ

7 голосов
/ 02 декабря 2011

Если вы просто хотите, чтобы простая функция выполнялась каждые несколько секунд, вы можете использовать setInterval.

setInterval запланирует вызов вашего обратного вызова с указанным регулярным интервалом.Если ваш обратный вызов занимает больше времени, то для завершения «отложенного» вызова по ожиданию запускается как можно скорее.Если для его завершения требуется больше двух интервалов, он игнорирует старые «галочки» и сохраняет только последний.

var task_is_running = false;
setInterval(function(){
    if(!task_is_running){
        task_is_running = true;
        do_something(42, function(result){
            task_is_running = false;
        });
    }
}, time_interval_in_miliseconds);

Хорошее объяснение setInterval и сравнение с setTimeout см. * 1009.*

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