mirror of
https://github.com/tenrok/axios.git
synced 2026-06-08 17:22:34 +03:00
Fixing issue with calling cancel after response has been received
This commit is contained in:
@@ -188,6 +188,10 @@ module.exports = function httpAdapter(config) {
|
||||
if (config.cancelToken) {
|
||||
// Handle cancellation
|
||||
config.cancelToken.promise.then(function onCanceled(cancel) {
|
||||
if (aborted) {
|
||||
return;
|
||||
}
|
||||
|
||||
req.abort();
|
||||
reject(cancel);
|
||||
aborted = true;
|
||||
|
||||
@@ -156,6 +156,10 @@ module.exports = function xhrAdapter(config) {
|
||||
if (config.cancelToken) {
|
||||
// Handle cancellation
|
||||
config.cancelToken.promise.then(function onCanceled(cancel) {
|
||||
if (!request) {
|
||||
return;
|
||||
}
|
||||
|
||||
request.abort();
|
||||
reject(cancel);
|
||||
// Clean up request
|
||||
|
||||
@@ -63,4 +63,27 @@ describe('cancel', function() {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when called after response has been received', function() {
|
||||
// https://github.com/mzabriskie/axios/issues/482
|
||||
it('does not cause unhandled rejection', function (done) {
|
||||
var source = CancelToken.source();
|
||||
axios.get('/foo', {
|
||||
cancelToken: source.token
|
||||
}).then(function () {
|
||||
window.addEventListener('unhandledrejection', function () {
|
||||
done.fail('Unhandled rejection.');
|
||||
});
|
||||
source.cancel();
|
||||
setTimeout(done, 100);
|
||||
});
|
||||
|
||||
getAjaxRequest().then(function (request) {
|
||||
request.respondWith({
|
||||
status: 200,
|
||||
responseText: 'OK'
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user