axios
/*
方式一:工廠方式創建
CancelToken.source
*/
var CancelToken = axios.CancelToken;
var source = CancelToken.source();
axios.get('/user/12345', {
cancelToken: source.token
}).catch(function(thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// 處理錯誤
}
});
// 取消請求(message 參數是可選的)
source.cancel('Operation canceled by the user.');
/*
方式二:executor 函數
*/
var CancelToken = axios.CancelToken;
var cancel;
axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// executor 函數接收一個 cancel 函數作為參數
cancel = c;
})
});
// 取消請求
cancel();
原生:abort()
<div>
<button id="get">請求</button>
<button id="cancel">取消</button>
</div>
<script>
var currentAjax = null
$('#get').click(function () {
currentAjax = $.ajax({
type: 'GET',
url: 'http://...',
success: function (res) {
console.log(res)
},
error: function (err) {
console.log("獲取失敗")
}
})
})
$('#cancel').click(function () {
if (currentAjax) {
currentAjax.abort()
}
})
</script>