Какие два аргумента принимает async.queue?
async.queue
— это функция из библиотеки async
, предназначенная для управления очередями асинхронных задач. Она позволяет выполнять несколько асинхронных функций последовательно или параллельно.
async.queue
принимает два основных аргумента:
Пример использования async.queue
Ниже представлен простой пример, который демонстрирует использование async.queue
.
const async = require('async');
// Создаем очередь с максимальным количеством параллельных задач
const queue = async.queue((task, callback) => {
console.log(`Обработка задачи: ${task.name}`);
// Имитация асинхронной работы с таймером
setTimeout(() => {
console.log(`Задача завершена: ${task.name}`);
callback(); // Вызов обратного вызова
}, task.delay);
}, 2); // Макс. 2 задачи одновременно
// Добавляем задачи в очередь
queue.push({ name: 'Задача 1', delay: 1000 });
queue.push({ name: 'Задача 2', delay: 500 });
queue.push({ name: 'Задача 3', delay: 3000 });
queue.push({ name: 'Задача 4', delay: 100 });
// Обрабатываем завершение всех задач
queue.drain(() => {
console.log('Все задачи обработаны!');
});
Объяснение примера:
- Мы создаем очередь с максимальным количеством параллельных задач, равным 2.
- В функции обработки задачи мы используем
setTimeout
для имитации асинхронной работы. - Задачи добавляются в очередь с помощью
queue.push()
. - Когда все задачи завершены, вызывается метод
queue.drain()
, который уведомляет нас о том, что очередь пустая.
Таким образом, async.queue
является мощным инструментом для управления асинхронными задачами, который помогает упорядочить выполнение функций и улучшить производительность вашего кода.