У меня следующий вызов $ http в AngularJS:
$http({
method: "GET",
url: "/svc/listAll",
contentType: "application/json",
cache: true,
transformResponse: appendTransform($http.defaults.transformResponse, responseTransformer)
});
function appendTransform(defaults, transform) {
defaults = angular.isArray(defaults) ? defaults : [defaults];
return defaults.concat(transform);
}
function responseTransformer(response) {
// do something with response
}
Я установил результат в кеш, потому что данные не меняются и могут быть большим набором данных (например, 30K строк, и да, такой большой набор результатов необходим). Вызов находится внутри директивы angularjs, которую можно использовать несколько раз на одном представлении / странице.
В результате получается, что кэш работает правильно, и только один вызов выполняется бэкэнд сервис. Последующие вызовы обращаются к кешу, как и планировалось. К сожалению, ответ трансформируется каждый раз, когда я бы предпочел изменить сам ответ один раз. Опять же, 30 тыс. Записей для обработки.
Есть ли способ изменить объект ответа один раз, чтобы к моменту, когда объект был возвращен последующими вызовами, ответ уже был преобразован?