[javascript] Bluebird를 사용하여 실행되는 비동기 작업의 개수를 제한하는 방법을 알려주세요.
먼저, Bluebird를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
npm install bluebird
다음은 Bluebird를 사용하여 비동기 작업의 개수를 제한하는 방법에 대한 예제 코드입니다.
const Promise = require('bluebird');
// 비동기 함수 예시 (이 부분은 실제 비동기 작업으로 대체되어야 함)
function asyncTask(id) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`Task ${id} 완료`);
resolve();
}, 1000);
});
}
const concurrencyLimit = 3; // 동시에 실행될 작업의 최대 개수
const tasks = Array.from({ length: 10 }, (v, k) => k);
const taskQueue = Promise.map(tasks, async (task) => {
await new Promise((resolve) => {
if (taskQueue.getInFlight() >= concurrencyLimit) {
taskQueue.then(() => resolve());
} else {
resolve();
}
});
await asyncTask(task);
}, { concurrency: 1 });
taskQueue.then(() => {
console.log('모든 작업 완료');
});
이 코드는 Bluebird를 사용하여 비동기 작업의 개수를 제한하는 방법을 보여줍니다. concurrencyLimit
변수를 사용하여 동시에 실행될 작업의 최대 개수를 설정하고, Promise.map
을 사용하여 작업을 실행합니다. concurrency
옵션을 사용하여 동시에 실행될 작업의 개수를 제한합니다.
이제 위의 예제를 참고하여 Bluebird를 사용하여 실행되는 비동기 작업의 개수를 제한하는 방법에 대해 이해하셨을 것입니다.