Эта функция оборачивает $ ngResource и принимает последний параметр (массив обратных вызовов [{успех, ошибка}, {успех, ошибка}] и перебирает каждый используя обещание.
//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>
ли это делать то, что вы хотите?
$ngResource.get(url).then(success, useFallbackUrl);
function useFallbackUrl(){ // you can also store these somewhere
$ngResource.get(url2).then(success);
}
function success(){
//do stuff
}
Вместо указания резервной копии по каждому запросу я надеюсь скрыть логику повтора. Таким образом, ресурс можно построить следующим образом: $ resource ([url, fallback1, fallback2, fallbackN],/* другие параметры ngResource * /); – Jensen