我们使用jquery的ajax,超时重试可以采用两种方式,一种是配置ajax的timeout的参数,另一种就是以setTimeout定时器的方式实现:
1)timeout参数配置方式
var xhr = $.ajax({ ???????????type:‘get‘, ???????????url: ‘http://localhost:8080/user‘, ???????????data:{ ???????????????id: 1 ???????????}, ???????????timeout: 5000, ?????????// 设置超时时间5秒 ???????????dataType: "json", ???????????success: function(res) { ???????????????if(res.success) { ???????????????????// 业务处理 ???????????????} ???????????}, ???????????error: function(err) { ???????????????if(err.statusText == ‘timeout‘) { ???????????????????xhr.abort(); ???// 超时中断请求 ???????????????????// 这里可以重新执行请求 ???????????????} ???????????} ???????})
2)setTimeout定时器方式
function retryCallback(){ ???var xhr; ???// 设置5秒超时定时器 ???var timer = setTimeout(function(){ ???????// 中断上一个请求 ???????xhr.abort(); ???????// 超时重试 ???????retryCallback(); ???}, 5000) ???xhr = $.ajax({ ???????type:‘get‘, ???????url: ‘http://localhost:8080/user‘, ???????data:{ ???????????id: 1 ???????}, ???????dataType: "json", ???????success: function(res) { ???????????// 未超时则清除定时器 ???????????clearTimeout(timer) ???????} ???}) }retryCallback()
超时重试(一)ajax
原文地址:https://www.cnblogs.com/lay2017/p/9063391.html