我有代码,这个脚本在循环中发送请求:
function parse() {
$.post("meth.php", {
proxy: $proxy,
time: (new Date().getTime())
}, function(data) {
return setTimeout(function() {parse()}, 5000);
}, "json");
}
但有时服务器发送状态为falied,我需要忽略此错误并发送新请求
我试试:
function parse() {
try{
$.post("meth.php", {
proxy: $proxy,
time: (new Date().getTime())
}, function(data) {
return setTimeout(function() {parse()}, 5000);
}, "json");
} catch (err) {
return setTimeout(function() {parse()}, 5000);
}
}
但是这种结构没有用,请帮忙
答案 0 :(得分:0)
您所做的不起作用,因为它在Ajax请求失败时不会抛出错误。你会看到jQuery for Ajax中的文档。您将根据您的操作使用失败或错误。
或者你可以使用一个总是会成功和失败的承诺。
var activeTimer;
function foo() {
if (activeTimer) window.clearTimeout(activeTimer)
$.ajax({
method: "POST",
url: "some.php",
data: { }
}).always(function() {
activeTimer = window.setTimeout(foo, 5000)
});
}