gpt4 book ai didi

javascript - Jquery:当 ajax 请求失败并出现错误 500 时脚本停止

转载 作者:行者123 更新时间:2023-11-30 17:11:21 27 4
gpt4 key购买 nike

我有一个脚本可以间隔发送 ajax 请求,理想情况下它永远不会停止工作。

    <script type="text/javascript">
var delay = 750;
window.setInterval(endlessJob, delay);
function endlessJob() {
//read from endless steam of data
var data = getData();
sendAjax(data);
}

function sendAjax(data) {
$.ajax({
url: "url",
jsonp: "jsonp",
dataType: "jsonp",
data: {
q: data
},
success: function (res) {
doSomething();
},
error: function (jqXHR, textStatus, errorThrown) {
console.log('ajax error! ' + errorThrown.message + "\n status: " + textStatus);
//should resume endless job, but the script fails with error(((((((((((
window.setInterval(endlessJob, delay);
}
});
}
</script>

然后是问题:在多次请求之后(通常在 1000 到 2000 之间),请求失败并显示内部服务器错误 500,并且该功能永远不会恢复。已经尝试过 try/catch,但没有成功(。基本上我只需要吞下错误并继续脚本。有人可以帮助我吗?

最佳答案

您每 3/4 秒向服务器调用一千多次。最终,您将在前一个调用有足够的时间完成之前进行调用。如果您希望您的脚本运行很长时间,我建议您要么将延迟时间延长到 1500-2000(1.5-2 秒,具体取决于您的服务器),要么更改您的代码以要求回调.这样,在前一个调用完成之前,下一个调用不会被初始化。这是您使用回调修改的代码。我没有时间对其进行测试,但希望它能让您大致了解如何使用回调编写它。

<script>

function start() {
var data = getData();

sendAjax(data, function(callbackText) {
console.log(callbackText);
start(); // the previous ajax call is done. we may now start the next one
});
}

function sendAjax(data, callback) {
$.ajax({
url: "url",
jsonp: "jsonp",
dataType: "jsonp",
data: {
q: data
},
success: function(res) {
doSomething();
callback("This call is done. Now moving on to the next one.");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('ajax error! ' + errorThrown.message + "\n status: " + textStatus);
//should resume endless job, but the script fails with error(((((((((((
window.setInterval(endlessJob, delay);
}
});
}

start(); // start the entire process
</script>

关于javascript - Jquery:当 ajax 请求失败并出现错误 500 时脚本停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26937879/

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