blog
blog copied to clipboard
请求的超时处理
请求的超时处理
xhr
有 timeout
可以配置
var xhr = new XMLHttpRequest()
xhr.open('GET', '/server')
xhr.timeout = 5000
xhr.ontimeout = function(){
console.log('Time Out')
}
fetch
需要利用 Promise.race
function _fetch (fetch_promise, delay) {
return Promise.race([
fetch_promise,
new Promise(function(resolve, reject){
setTimeout(reject('Time Out'), delay)
})
])
}
_fetch(fetch('/server', {method: 'GET'}), 5000)
超时后触发后最好把 fetch cancel 掉