js模仿axios的请求与取消_cancelToken
转载的文档连接:https://www.cnblogs.com/superil/p/15722941.html简要实现如下:// 创建Promise,返回开关token promise和cancelfunction source () {let cancel;const promise = new Promise((resolve) => {cancel = resolve;}return
·
转载的文档连接:https://www.cnblogs.com/superil/p/15722941.html
简要实现如下:
// 创建Promise,返回开关token promise和cancel
function source () {
let cancel;
const promise = new Promise((resolve) => {
cancel = resolve;
}
return {
token: promise // pending状态的promise
cancel, // 使上面的promise变成resolve状态
}
}
// 发请求
function axios_get (config) {
const xhr = new XMLHttpRequest(),
method = "GET",
url = "https://developer.mozilla.org/";
xhr.open(method, url, true);
xhr.send();
if (config.cancelToken) {
config.cancelToken.then(() => { // 把token promise插进来
xhr.abort();
})
}
}
// 代码执行
const source = source();
axios_get({ cancelToken: source.token });
setTimeout(() => {
source.cancel(); // 点燃炸弹,触发token promise的then
}, 5000)
更多推荐
所有评论(0)