У меня есть ситуация, когда я создаю слой данных на основе ES6 JS Promises, которые извлекают данные из сети. Я кэширую все обещания внутренне по URL.ES6 Promise автоматическая пост-обработка/клонирование результатов
Все, кажется, работает нормально, кроме одного. Я хочу, чтобы данные, выходящие из сетевого уровня, были копией/клоном данных, полученных из сети, и я, очевидно, не хочу делать это везде в клиентском коде, который реализует обработчики Promise.
Я хотел бы установить это, чтобы обработчик автоматически получал копию кэшированных данных.
Чтобы добавить к этому поворот, я хотел бы, чтобы это было настроено на основе URL-адреса внутри слоя данных, так что некоторые обещания делают дополнительную копию после обработки, а другие возвращают только исходный результат.
Может ли кто-нибудь предложить правильную реализацию для этого? Я должен упомянуть, что я хотел бы получить новую копию исходного исходного результата каждый раз, когда новый клиент попросит об этом.
В настоящее время упрощенной реализации псевдо выглядит следующим образом
getCachedData(url){
if (cache[url]) {
return cache[url];
} else {
var promise = new Promise(function(resolve,reject){
var data = ...ajax get...;
resolve(data);
});
cache[url] = promise;
}
getCachedData(url).then(result=>{
here I want the result to be a copy of data I resolved the original promise with.
});
Просто используйте 'get (url) .then (clone)'? Какова ваша текущая реализация? – Bergi
опубликовал псевдокод текущей реализации. – Moonwalker