promise中断请求
Sunny-117 opened this issue · 2 comments
Sunny-117 commented
promise中断请求
hyxieshi commented
// 根据promise a+ 规范来说
// then()接受两个参数 如果参数是不是函数将被忽略
// onFulfilled 将在promise fulfilled 后调用并接受一个参数
// onRejected 将在promise rejected 后调用 并接受一个参数
// 另外 then 一定返回的是promise
// 若两参数是函数,当函数返回的是一个新的promise对象时
//原promise 跟新promise 状态保持一致
// 如果返回的promise 是个pending 状态 将保留直到转换为fulfilled / rejected
//
// promise中断请求 不就是在then的时候将返回值新promise保持状态为penging
// 那么这个promise 的链也将会中止(等待)
Promise.resolve().then(()=>{
// pending
console.log(1)
return new Promise(()=>{})
// 后面的then 将不会调用
}).then(()=>{
console.log(2)
})
Aoda57 commented
let abort = false function sendRequest() { return new Promise((resolve, reject) => { if (abort) { reject() } // 发送异步请求 setTimeout(() => { resolve('result') }, 2000) }) } setTimeout(() => { // 中断请求 abort = true }, 1000)
你这个写法不可能实现的吧,这个代码执行顺序是先执行
if (abort) {
reject()
}
然后再执行setTimeout函数里面的 abort = true,所以始终没有效果的