function abortWrapper(p1: Promise<any>) {
let abort
let p2 = new Promise((resolve, reject) => (abort = reject)) // 永远的pending状态,不会终止
let p = Promise.race([p1, p2]) // 返回到第一个成功或者失败的promise 因为p2永远都是pending状态,所以它不会被使用
p.abort = abort
return p
}
const aa = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("成功");
}, 2000)
})
const targetAA = abortWrapper(aa)
targetAA.abort("中断promise")
targetAA.then((res) => {
console.log("res", res); // 没有打印
})