Javascript 处理ajax错误并执行承诺链

Javascript 处理ajax错误并执行承诺链,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图为失败的ajax请求提供一个后备方案。 我想要一个全局解决方案,这样我就不必更改代码中的每个调用 我尝试向ajaxSetup提供错误处理程序,但问题是我无法执行链接回调 $.ajaxSetup({ 错误:函数(){ console.error('发生错误') 返回$.getJSON('https://jsonplaceholder.typicode.com/todos/1') } }) $.getJSON('https://jsonplaceholder.typicode.com/tod

我试图为失败的ajax请求提供一个后备方案。 我想要一个全局解决方案,这样我就不必更改代码中的每个调用

我尝试向
ajaxSetup
提供
错误处理程序,但问题是我无法执行链接回调

$.ajaxSetup({
错误:函数(){
console.error('发生错误')
返回$.getJSON('https://jsonplaceholder.typicode.com/todos/1')
}
})
$.getJSON('https://jsonplaceholder.typicode.com/todos/0“)//Id不存在
。然后(todo=>console.log(todo))

jquery3.0中接受的回调方法是:done、always、fail。 因此,我会调用回调失败,在内部,我会将ajax调用重新发送到一个具有动态id的函数中

const submit = (id) => {
      const xhr = $.getJSON(`https://jsonplaceholder.typicode.com/todos/${id}`)
         .done(todo => console.log(todo))
         .fail(err => { console.error(err); submit(id++); });
};

submit(0);

它实际上已经执行了,您只是忘记了编写下一个命令<代码>返回$.getJSON('https://jsonplaceholder.typicode.com/todos/1,然后(todo=>console.log(todo))
在我的例子中,这是不可能的,因为有很多调用都有自己的
then
s和
catch
s,所以我不能将所有的逻辑都放在错误处理程序中。我不想解决这个确切的问题(这是一个演示示例)。我希望重新执行失败的(和不同的)ajax请求,并让它们继续在回调链上执行它们的请求(
then
s和
catch
s)yeah@salah3x我理解。。。这是执行重新执行失败的ajax请求的唯一方法:在重新提交失败时,在继续链上。也许这可以根据您的域工作流和逻辑实现进行扩展。。。