mirror of
https://github.com/tenrok/axios.git
synced 2026-06-23 20:40:40 +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) {
|
if (config.cancelToken) {
|
||||||
// Handle cancellation
|
// Handle cancellation
|
||||||
config.cancelToken.promise.then(function onCanceled(cancel) {
|
config.cancelToken.promise.then(function onCanceled(cancel) {
|
||||||
|
if (aborted) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
req.abort();
|
req.abort();
|
||||||
reject(cancel);
|
reject(cancel);
|
||||||
aborted = true;
|
aborted = true;
|
||||||
|
|||||||
@@ -156,6 +156,10 @@ module.exports = function xhrAdapter(config) {
|
|||||||
if (config.cancelToken) {
|
if (config.cancelToken) {
|
||||||
// Handle cancellation
|
// Handle cancellation
|
||||||
config.cancelToken.promise.then(function onCanceled(cancel) {
|
config.cancelToken.promise.then(function onCanceled(cancel) {
|
||||||
|
if (!request) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
request.abort();
|
request.abort();
|
||||||
reject(cancel);
|
reject(cancel);
|
||||||
// Clean up request
|
// 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