Angular - 具有后备网址的ngResource

时间:2016-01-12 13:07:52

标签: angularjs ngresource fallback

有没有办法创建一个带有多个网址的$资源,用作链式回退?因此,当主机在第一个URL上无法访问时,资源不会返回错误,而是尝试将请求发送到第二个URL,依此类推。

感谢任何想法,

詹森

1 个答案:

答案 0 :(得分:0)

此函数包装$ ngResource并获取最后一个参数(回调数组[{success,error},{success,error}]并使用promise循环遍历每个参数。



//using lodash
function ngResourceWrapper() {
    var args = _.toArray(arguments);
    var callbacks = _.last(args); 
    if (_.isArray(callbacks)) {
      args.splice(args.length - 1, 1); //remove last element
    }
    var promise = $ngResouce.apply($ngResouce, args).promise;

    if (callbacks) {
      callbacks
        .forEach(function(callback) {
            promise
              .then(callbacks.success, callbacks.error);
          }

        }

    }

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
&#13;
&#13;
&#13;

这样做你想要的吗?

$ngResource.get(url).then(success, useFallbackUrl);

function useFallbackUrl(){ // you can also store these somewhere
    $ngResource.get(url2).then(success);
}

function success(){
    //do stuff
}