你应该用一个变量标记,禁止该请求发出。cancelToken并不是取消请求,而是不接收该请求的返回值。
我解决过类似的问题,比如按钮多次点击只让第一次有效,除非第一次点击的请求已经返回。
function singleClick(func, manualDone = false) {
let lock = false
return function (...args) {
if (lock) return
lock = true
const done = () => lock = false
if (manualDone) return func.call(this, ...args, done)
const promise = func.call(this, ...args)
promise ? promise.finally(done) : done()
return promise
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…