javascript - 如果其他 URL 不可用,则从其他 URL 下载文件

标签 javascript jquery

我对不同服务器有不同的网址,但有相同的文件,为了确保上述服务器之一处于事件状态,我想尝试从第一个服务器下载,如果失败,请尝试第二个服务器,依此类推。 ..

是否有更好的方法来代替我心中的方法?就是这样:

var urls=["http://Url1.com","http://Url2.com","http://Url3.com"]
    $.get(ulrs[0]).done(function () {
      alert("success");
    }).fail(function () {
       alert(" First failed!, try with second");
       $.get(ulrs[1]).done(function () {
         alert("success");
       }).fail(function () {
         alert("Second failed! Try with third...");
         $.get(ulrs[2]).done(function () {
           alert("success");
         }).fail(function () {
           alert("All failed!");
          });
       });
    });

编辑:我想概括它,以便与不同大小的不同数组一起使用......

最佳答案

使用递归:

function requestNext(arr, success, error) {
    if (!arr.length)
        return error();

    function onError() {
        alert(url + " failed!");
        requestNext(arr, success, error);
    }
    var url = arr.shift();
    $.get(url).done(success).fail(onError);
}
var urls = ["http://Url1.com","http://Url2.com","http://Url3.com"];
requestNext(urls, function(){ alert("success"); }, function(){ alert("all failed") });

此函数完成后,urls 数组将发生变化。如果您不希望发生这种情况,请传递一份副本:

requestNext(urls.slice(), function(){ alert("success"); }, function(){ alert("all failed") });

或者使用 Dogbert 的解决方案,将 var url = arr.shift(); 更改为:

var url = arr[0];
arr = arr.slice(1);

关于javascript - 如果其他 URL 不可用,则从其他 URL 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908995/

相关文章:

javascript - 更改标签属性数组

javascript - 将 URL 值缩短为 Javascript 变量

javascript - 更改 jQuery 中具有相同类的每个元素的元素文本

Jquery 的 on 方法出现问题

javascript - 无限滚动显示重复结果

javascript - 在 HTML 中创建分页符

javascript - 如何检查三元运算符中的 undefined variable ?

javascript - 如何在 Array.map 中获取正确的 "this"?

php - 无法将值从子页面传递到父页面且无响应

javascript - Jquery 将数据堆栈附加在彼此之上,而不是超过表长度