Sobes.tech
Middle+

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 */