class Queue {
}
const processTask = (task, resolve) => {
// время обработки задачи от 500 до 1000
const workTime = 500 + Math.floor(Math.random() * 500)
setTimeout(() => {
console.log(task)
resolve()
}, workTime)
}
const paralleledTasks = 2
const whenEmpty = () => console.log('Queue is empty')
const queue = new Queue(processTask, paralleledTasks, whenEmpty)
queue.add('task 1')
queue.add('task 2')
queue.add('task 3')
queue.loop()
/*
example output:
task 1
task 2
task 3
Queue is empty
- несколько задач обрабатывается
- задано количество одновременно, по горе
- paralleledTasks = 1 значит может быть
- не последовательно как тут сначала
- успели выполниться task 2, а потом task 1
*/