OpenDroneMap-WebODM/coreplugins/cesiumion/public/utils/fetchCancelable.jsx

25 wiersze
598 B
JavaScript

const makeCancelable = promise => {
let hasCanceled_ = false;
const wrappedPromise = new Promise((resolve, reject) => {
promise.then(
val => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),
error =>
hasCanceled_ ? reject({ isCanceled: true }) : reject(error)
);
});
return {
promise: wrappedPromise,
cancel() {
hasCanceled_ = true;
}
};
};
export { makeCancelable };
const fetchCancelable = (...args) => makeCancelable(fetch(...args));
export default fetchCancelable;