gpt4 book ai didi

javascript - 如何正确处理ajax超时

转载 作者:行者123 更新时间:2023-11-29 20:58:49 24 4
gpt4 key购买 nike

例如,用户想要登录,但连接速度很慢或请求卡在某个网络中,然后用户等待,但有时重新发送请求比等待更好。

问题:

  • 理想的等待时间是多长? (没有上传文件,只是简单登录)我已经设置了 15 秒,但可能太多了。
  • 什么是最好的解决方案?

1) 让用户等待,直到他决定再次点击登录

2) 设置ajax超时

$.ajax({

url: '{{ url('/login') }}',
data: data,
method: 'POST',
timeout: 15000,

并向他们显示一个错误

error: function(data, status, error){

if(status==="timeout") {
var errorString = 'Please retry. Ref Timeout';
}

3) 自动重试 ( code )

$.ajax({
url : 'someurl',
type : 'POST',
data : ....,
tryCount : 0,
retryLimit : 3,
...
error: function(data, status, error){
if (status == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
return;
}

4) 在 ajax 上使用包装器函数

setTimeout(function(){
$.ajax({...})
}, 15000);

5) Some other options

最佳答案

我个人会做一个混合,也就是说,尝试 2 次,然后下降,你可以使用这个代码:

$.ajax({

url: '{{ url('/login') }}',
data: data,
method: 'POST',
timeout: 10000, // sets timeout to 5000 = 5 seconds
retryCount: 0, // start retry count
retryLimit: 1, //will let you retry a determined number of times

error: function(data, status, error){

if(status==="timeout") {
this.retryCount++;
if (this.retryCount <= this.retryLimit) { //&& Date.now() - this.created < this.retryTimeout
console.log("Retrying");
$.ajax(this);
return;
}
else{
var errorString = 'Timeout';
}

关于javascript - 如何正确处理ajax超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com