[javascript] Bluebird를 사용하여 비동기 작업이 완료될 때까지 대기하고 결과를 얻는 방법을 알려주세요.
- Bluebird 설치
먼저 Bluebird를 설치해야합니다.
npm
을 사용하여 다음 명령을 실행하여 Bluebird를 설치합니다.
npm install bluebird
- Promise를 사용하여 비동기 작업 만들기
다음은 Bluebird의
Promise
를 사용하여 간단한 비동기 작업을 만드는 예제입니다.
const Promise = require('bluebird');
let asyncTask = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('비동기 작업 완료');
}, 2000);
});
};
- Promise.all을 사용하여 여러 개의 비동기 작업 조정
여러 개의 비동기 작업이 있을 때,
Promise.all
을 사용하여 모든 작업이 완료된 후 결과를 얻을 수 있습니다.
let asyncTask1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('첫 번째 비동기 작업 완료');
}, 2000);
});
};
let asyncTask2 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('두 번째 비동기 작업 완료');
}, 3000);
});
};
Promise.all([asyncTask1(), asyncTask2()]).then((results) => {
console.log(results); // ['첫 번째 비동기 작업 완료', '두 번째 비동기 작업 완료']
});
- Promise.props를 사용하여 객체 형태의 결과 조정
각각의 작업이 객체 형태의 결과를 반환할 때,
Promise.props
를 사용하여 결과를 얻을 수 있습니다.
let asyncTask1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ result: '첫 번째 비동기 작업 완료' });
}, 2000);
});
};
let asyncTask2 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ result: '두 번째 비동기 작업 완료' });
}, 3000);
});
};
Promise.props({
task1: asyncTask1(),
task2: asyncTask2()
}).then((results) => {
console.log(results.task1.result); // '첫 번째 비동기 작업 완료'
console.log(results.task2.result); // '두 번째 비동기 작업 완료'
});
이러한 방법을 사용하면 Bluebird를 통해 비동기 작업이 완료될 때까지 대기하고 결과를 간단하게 얻을 수 있습니다.