Open jiefancis opened 3 years ago
function request(){ return new Promise((resolve, reject) => { setTimeout(() => { resolve('resolved') }, Math.random() * 5000) }) }
function cb(){ let prevStamp = Date.now(); return new Promise((resolve , reject) => {
let timer = setTimeout(() => { let nowStamp = Date.now(); if(nowStamp - prevStamp > 2000){ reject('timeout') } },2000) request().then(res => { resolve(res) clearTimeout(timer) }) })
}
cb().then(res => console.log('resolve', res)) .catch(err => console.log('timeout',err))
- promise提供race处理多个promise优先执行的状态
function cb(){ let timeout = () => new Promise((resolve, reject) => { setTimeout(() => { reject('timeout') }, 2000) })
let promises = [ request(), timeout() ]
return Promise.race(promises) }
有请求request,请求设定2s超时,如何实现超时处理?
function cb(){ let prevStamp = Date.now(); return new Promise((resolve , reject) => {
}
cb().then(res => console.log('resolve', res)) .catch(err => console.log('timeout',err))
function request(){ return new Promise((resolve, reject) => { setTimeout(() => { resolve('resolved') }, Math.random() * 5000) }) }
function cb(){ let timeout = () => new Promise((resolve, reject) => { setTimeout(() => { reject('timeout') }, 2000) })
let promises = [ request(), timeout() ]
return Promise.race(promises) }
cb().then(res => console.log('resolve', res)) .catch(err => console.log('timeout',err))