JS promise 超时
/**
* promise 超时
*
* @param {*} p new Promise()
* @param {number} [timeout=0] 超时时间
* @returns
*/
export const promiseTimeout = (p, timeout = 0) => {
let timer = null
const timerPromise = new Promise((resolve, reject) => {
timer && clearTimeout(timer)
timer = setTimeout(() => {
// reject(new Error('promise time out'))
clearTimeout(timer)
resolve('')
}, timeout)
})
return Promise.race([p, timerPromise])
}
该代码段定义了一个`promiseTimeout`函数,它接受一个Promise对象`p`和一个可选的超时时间`timeout`。函数内部使用`setTimeout`创建一个定时器Promise,当达到超时时,原本的Promise和定时器Promise进行竞争。如果Promise先完成,则正常返回结果;如果超时发生,定时器Promise会resolve一个空字符串,实现超时后的默认处理。
1117

被折叠的 条评论
为什么被折叠?



