如何终止前一个promise,或者阻止其回调执行?
我在短时间内发了两次请求 都是promise对象 那我在发后一次请求的时候怎么终止前面那个还没有返回的promise呢?
关注者
6被浏览
24,7083 个回答
可以用 Promise.race 模拟呀。
function getWithCancel(promise, token) {
Promise.race([promise, new Promise((_, reject) => {
token.cancel = function() {
reject(new Error('cancel'))
}
})]).catch((e) => console.log(e))
};
var token = {};
var promise = fetch(xxxxx)
getWithCancel(promise, token)
token.cancel()
这样就能 cancel 掉前面的 Promise 了。
另外一些库也能实现,不过为了实现一个 cancel 功能引入一个库,有点不太划算哦