Skip to content

Instantly share code, notes, and snippets.

@Munawwar
Last active February 18, 2021 13:38
Show Gist options
  • Save Munawwar/2a9007ae8bc832ecdfc3fa924f4ee826 to your computer and use it in GitHub Desktop.
Save Munawwar/2a9007ae8bc832ecdfc3fa924f4ee826 to your computer and use it in GitHub Desktop.
Axios call that aborts/cancels the previous call automatically
const postAndCancelPrevCall = (() => {
let cancelTokenInstance;
return async (body) => {
try {
if (cancelTokenInstance) {
cancelTokenInstance.cancel('cancelled by user');
}
cancelTokenInstance = CancelToken.source();
const axiosResponse = await axios.post(body, {
cancelToken: cancelTokenInstance.token
});
cancelTokenInstance = null;
return axiosResponse;
} catch (err) {
if (!axios.isCancel(err)) {
throw err;
}
}
return undefined;
};
})();
Promise.all([
// like a user typing 'hi' on a text field..
postAndCancelPrevCall({ text: 'h' }),
postAndCancelPrevCall({ text: 'hi' }),
]).then(results => console.log(results)); // [undefined, <axiosResponse>]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment