mirror of
https://github.com/axios/axios.git
synced 2026-04-13 15:01:54 +08:00
* issue#2609 | Sasha | predictable axios requests
- axios requests are not delayed by pre-emptive promise creation by default
- add options to interceptors api ("synchronous" and "runWhen")
- add documentation and unit tests
* issue#2609 | Sasha | pull request feedback changes
* issue#2609 | Sasha | additional feedback changes
* issue#2609 | Sasha | put back try/catch
* issue#2609 | Sasha | add 2 adapter unit tests
- remove check for requestCancelled
Co-authored-by: ak71845 <alexandre.korotkov@kroger.com>
Co-authored-by: Xianming Zhong <chinesedfan@qq.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>
99 lines
2.3 KiB
JavaScript
99 lines
2.3 KiB
JavaScript
var axios = require('../../index');
|
|
|
|
describe('adapter', function () {
|
|
beforeEach(function () {
|
|
jasmine.Ajax.install();
|
|
});
|
|
|
|
afterEach(function () {
|
|
jasmine.Ajax.uninstall();
|
|
});
|
|
|
|
it('should support custom adapter', function (done) {
|
|
axios('/foo', {
|
|
adapter: function barAdapter(config) {
|
|
return new Promise(function dispatchXhrRequest(resolve) {
|
|
var request = new XMLHttpRequest();
|
|
request.open('GET', '/bar');
|
|
|
|
request.onreadystatechange = function () {
|
|
resolve({
|
|
config: config,
|
|
request: request
|
|
});
|
|
};
|
|
|
|
request.send(null);
|
|
});
|
|
}
|
|
}).catch(console.log);
|
|
|
|
getAjaxRequest().then(function(request) {
|
|
expect(request.url).toBe('/bar');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should execute adapter code synchronously', function (done) {
|
|
var asyncFlag = false;
|
|
axios('/foo', {
|
|
adapter: function barAdapter(config) {
|
|
return new Promise(function dispatchXhrRequest(resolve) {
|
|
var request = new XMLHttpRequest();
|
|
request.open('GET', '/bar');
|
|
|
|
request.onreadystatechange = function () {
|
|
resolve({
|
|
config: config,
|
|
request: request
|
|
});
|
|
};
|
|
|
|
expect(asyncFlag).toBe(false);
|
|
request.send(null);
|
|
});
|
|
}
|
|
}).catch(console.log);
|
|
|
|
asyncFlag = true;
|
|
|
|
getAjaxRequest().then(function() {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should execute adapter code asynchronously when interceptor is present', function (done) {
|
|
var asyncFlag = false;
|
|
|
|
axios.interceptors.request.use(function (config) {
|
|
config.headers.async = 'async it!';
|
|
return config;
|
|
});
|
|
|
|
axios('/foo', {
|
|
adapter: function barAdapter(config) {
|
|
return new Promise(function dispatchXhrRequest(resolve) {
|
|
var request = new XMLHttpRequest();
|
|
request.open('GET', '/bar');
|
|
|
|
request.onreadystatechange = function () {
|
|
resolve({
|
|
config: config,
|
|
request: request
|
|
});
|
|
};
|
|
|
|
expect(asyncFlag).toBe(true);
|
|
request.send(null);
|
|
});
|
|
}
|
|
}).catch(console.log);
|
|
|
|
asyncFlag = true;
|
|
|
|
getAjaxRequest().then(function() {
|
|
done();
|
|
});
|
|
});
|
|
});
|