gpt4 book ai didi

JavaScript:将延迟添加到 jquery ajax 重试

转载 作者:行者123 更新时间:2023-11-30 14:14:42 25 4
gpt4 key购买 nike

我有以下结构的代码。目的是发送一个 Ajax 请求,并在每次尝试之间延迟重试几次:

$.ajax({
type: 'GET',
url: 'https://example.com',
retryLimit: 3,
attempt: 1,
success: function (data) {
doStuff();
},
error: function (data) {
if (this.attempt++ <= this.retryLimit) {
var retry = function () {
$.ajax(this);
};
setTimeout(retry, 1000);
} else {
handleError();
}
}
});

问题是我在尝试调用 $.ajax 时遇到了 TypeError: Illegal invocation。我还尝试用这样的 promise 替换:

new Promise(function(resolve) {
setTimeout(resolve, 1000);
}).then(function() {
$.ajax(this);
});

但是我得到了同样的错误。这是怎么回事,我该如何解决?

注意:我正在使用 Atlassian SDK 构建 Jira 插件,因此我的 javascript 版本似乎受到限制。我不是 100% 确定我有哪个版本,但我知道当我尝试使用箭头函数时它无法编译。

最佳答案

this 的上下文在 retry() 函数执行时已经改变,不再是 AJAX 信息。但是,您应该能够使用变量将其包装在闭包中:

var self = this;
var retry = function () {
$.ajax(self);
};

(请注意,整个上下文本身也在回调中发生,error。因此,如果 this 仍然不是您需要的,您可能需要将相同的概念应用到另一个更高的范围。)

关于JavaScript:将延迟添加到 jquery ajax 重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53783290/

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