getJSON 错误处理 - 使用 2 个 API

getJSON error handling - using 2 APIs

首先这不是另一个跨域错误线程。我正在开发一个简单的网络应用程序,它使用两个 APIs(主要和备份)从不同的服务器检索相同的数据。我使用以下模式:

//some functions and variables for DOM handling

$.getJSON(mainUrl, function(results) {

    //code to get and handle the data from main API

}).fail(function() { 

    $.getJSON(backupUrl, function(results) {

        //code to get and handle the data from backup API

    });
});

问题是主要 API 可能会在很多方面失败:

  1. 没有响应 - 我的代码按预期工作正常
  2. 响应,但由于 API 服务器的外部问题,returns 对象具有空属性。

第二个选项比较棘手,因为它不适合 getJSON .fail 场景。我可以处理的方法是添加一个 if 语句来检查对象属性是否不为 null 并从 backupAPI 处理程序中复制代码以检索备份源,所以它看起来像这样:

//some functions and variables for DOM handling

$.getJSON(mainUrl, function(results) {

     if (results.property) {

         //code to get and handle the data from main API

     } else {

         //code to get and handle the data from backup API
     }

}).fail(function() { 

    $.getJSON(backupUrl, function(results) {

        //code to get the data from backup API

    });
});

但是,基本上我的 main.js 文件的两个地方都有相同的代码块,这似乎不是一个好的做法。

你们能不能帮我解决这个问题,避免把相同的代码放在一个地方两次?谢谢。

如何将 //code to get the data from backup API 放在一个函数中,然后在您放置该代码的任何地方调用该函数?

你最终会得到类似

的东西
//some functions and variables for DOM handling

$.getJSON(mainUrl, function(results) {

     if (results.property) {

         //code to get and handle the data from main API

     } else {

         getJSONFromBackup();
     }

}).fail(function() { 

    getJSONFromBackup();

});

function getJSONFromBackup(){
    $.getJSON(backupUrl, function(results) {

        //code to get the data from backup API

    });
}