未验证 提交 0499a970 编写于 作者: N Nick Uraltsev 提交者: GitHub

Merge pull request #1399 from mattridley/master

Fixing #537 Rejecting promise if request is cancelled by the browser
......@@ -80,6 +80,18 @@ module.exports = function xhrAdapter(config) {
request = null;
};
// Handle browser request cancellation (as opposed to a manual cancellation)
request.onabort = function handleAbort() {
if (!request) {
return;
}
reject(createError('Request aborted', config, 'ECONNABORTED', request));
// Clean up request
request = null;
};
// Handle low level network errors
request.onerror = function handleError() {
// Real errors are hidden from us by the browser
......
......@@ -79,6 +79,31 @@ describe('requests', function () {
.then(finish, finish);
});
it('should reject on abort', function (done) {
var resolveSpy = jasmine.createSpy('resolve');
var rejectSpy = jasmine.createSpy('reject');
var finish = function () {
expect(resolveSpy).not.toHaveBeenCalled();
expect(rejectSpy).toHaveBeenCalled();
var reason = rejectSpy.calls.first().args[0];
expect(reason instanceof Error).toBe(true);
expect(reason.config.method).toBe('get');
expect(reason.config.url).toBe('/foo');
expect(reason.request).toEqual(jasmine.any(XMLHttpRequest));
done();
};
axios('/foo')
.then(resolveSpy, rejectSpy)
.then(finish, finish);
getAjaxRequest().then(function (request) {
request.abort();
});
});
it('should reject when validateStatus returns false', function (done) {
var resolveSpy = jasmine.createSpy('resolve');
var rejectSpy = jasmine.createSpy('reject');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册