instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
28 lines (26 loc) • 649 B
JSX
export const cancelable_timeout = (callback, lapse) => {
let canceled = false
setTimeout(() => {
if (!canceled) {
callback()
}
}, lapse)
return {
cancel: () => {
canceled = true
},
}
}
export const cancelable_promise = (constructor) => {
let canceled = false
return {
promise: new Promise((resolve, reject) => {
let promise = new Promise(constructor)
promise.then((data) => canceled ? reject({error: "canceled", data}) : resolve(data))
promise.catch((data) => canceled ? reject({error: "canceled", data}) : reject(data))
}),
cancel: () => {
canceled = true
},
}
}