[javascript] Bluebird를 사용하여 비동기 작업을 취소하는 방법을 알려주세요.
Bluebird는 JavaScript에서 비동기 작업을 다루는 데 유용한 라이브러리입니다. 비동기 작업을 수행하는 동안 종종 작업을 취소해야 하는 경우가 있습니다. Bluebird를 사용하여 이를 어떻게 할 수 있는지 알아보겠습니다.
Bluebird의 Promise 객체 생성
우선 Bluebird의 Promise 객체를 생성해야 합니다.
const Promise = require('bluebird');
비동기 작업 설정 및 취소
이제 비동기 작업을 설정하고 취소하는 방법에 대해 알아보겠습니다.
const promise = new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
reject(new Error('작업이 취소되었습니다.'));
}, 5000);
// 비동기 작업 수행
doAsyncTask().then((result) => {
clearTimeout(timeout);
resolve(result);
}).catch((error) => {
clearTimeout(timeout);
reject(error);
});
});
// 작업 취소
promise.cancel(); // Bluebird의 Promise 객체는 기본적으로 이 메서드를 제공하지 않기 때문에 해당 작업을 직접 구현해야 합니다.
Bluebird의 Promise 객체 취소 구현
Bluebird의 Promise 객체는 기본적으로 cancel
메서드를 제공하지 않습니다. 따라서 이 기능을 직접 구현해야 합니다. 아래는 Promise 객체를 생성하고 cancel
메서드를 직접 구현하는 예시입니다.
class CancelablePromise extends Promise {
constructor(executor) {
let cancelled = false;
super((resolve, reject) => {
executor((value) => {
if (!cancelled) {
resolve(value);
}
}, (reason) => {
if (!cancelled) {
reject(reason);
}
});
});
this.cancel = () => {
cancelled = true;
};
}
}
이제 Bluebird를 사용하여 비동기 작업을 취소할 수 있는 방법을 알아보았습니다. 오류가 발생할 수 있는 비동기 작업을 안전하게 취소할 수 있게 됩니다.