Сделайте это наоборот.
Проверьте данные локально и даже не отправляйте запрос, если он у вас уже есть.
Оберните данные в обещание, чтобы оно было всегда иметь один и тот же API независимо от того, откуда вы его извлекаете.
async function get_data() {
let addresses = localStorage.getItem('addresses');
if (addresses) {
return JSON.parse(addresses);
}
let ajaxData = await getAddresses();
addresses = ajaxData.data;
localStorage.setItem('addresses', JSON.stringify(addresses));
return addresses;
}
get_data().then(data => {
// Rest of the code that should be executed after the AJAX call
});
Другой подход - забыть о localStorage и просто настроить веб-сервис на подходящие заголовки кэширования . Затем вы можете сделать HTTP-запрос, но если информация о кеше показывает, что кэш браузера содержит обновленные данные, он вообще не будет выполнять HTTP-запрос.
Вам не нужно заново изобретать локальное кеширование данные. HTTP запекла.