Я работаю над функцией NodeJS, которая имеет ряд асинхронных задач, которые необходимо выполнить.NodeJS Queuing Asynchronous Functions
Я читал в массиве tasks
, вытащил из базы данных, и каждый task
имеет свойство runFrequency.
пример:
var tasks: [
task1: {
type: doSomething,
...,
runFrequency: 10 // Needs to run every 10 seconds.
},
task2: {
type: doSomethingElse,
...,
runFrequency: 30 // Needs to run every 30 seconds.
},
task3: {
type: doSomething,
...,
runFrequency: 10
}
];
Мне нужно вызвать processTask()
функцию для выполнения каждой из задач каждые runFrequency
настройки, но только запустить одну задачу за один раз. (10-секундная RunFrequency - это всего лишь цель, она не должна быть ровно 10 секунд).
пример
12:00:00: processTask(task1);
12:00:02: task1 completes, task1 scheduled to run again at 12:00:12,
12:00:02: processTask(task2);
12:00:05: task2 completes, task2 scheduled to run again at 12:00:35,
12:00:05: processTask(task3);
12:00:10: task3 completes, task3 scheduled to run again at 12:00:20,
// all tasks finished, next task isn't scheduled to start until 12:00:12,
12:00:12: processTask(task1);
12:00:25: task1 completes, task1 scheduled to run again at 12:00:35,
12:00:25: task2 was scheduled to start at 12:00:20, it's the next task in the queue so it needs to be run now.
Что бы лучший способ создания такого рода «очереди задач» в NodeJS?
Я посмотрел на Куэ и Редис, но я не уверен, что это именно то, что я хочу.
Спасибо,