У меня есть некоторый код в приложении angular
Я через некоторый сервис кладу данных в кеш, проверяю с тем что приходит с сервера и если оно отличается то вывожу сообщение об изменении. Операции с получением/заносом чего либо в кеш должны выполняться поочередно, но почему-то выполняются ассинхронно не дожидаясь друг друга, даже если указан await.
Сервис cachingService выполняет функции get/set (для получения или внесения данных в кеш) и возвращает Promise
Ниже код с комментариями:
private async checkNewActiveBonuses(data: UserInfo): Promise<void> {
// функция каждые 10 секунд получает какие либо данные с сервера, которые я потом сравниваю с тем что в кеше
const cacheDataBonuses: string[] = await this.cachingService.get<string[]>('dataBonuses') || [];
// тут мы пытаемся положить данные из кеша (через самописный сервис) в константы, но код ниже не дожидается этого и идет дальше
// console.log(cacheDataBonuses); // приходит undefined, но через 10 секунд когда функция вызывается снова выводятся уже актуальные данные
const activeBonusesKeys = _keys(data?.loyalty?.BonusesBalance);
if (!_isEqual(activeBonusesKeys, cacheDataBonuses)) {
// если есть какие либо отличия, то делаю запрос на сервер и получаю актуальные данные
let activeBonuses = [];
this.queryBonuses(true, 'active').then((bonuses: Bonus[]): void => {
// запрос на сервер
activeBonuses = bonuses;
});
_each(activeBonusesKeys, (bonusId: string): void => {
if (!_includes(cacheDataBonuses, bonusId)) {
_each(activeBonuses, (bonus: Bonus): void => {
bonus.isDeposit ? this.showMessageBonusBalance(bonus) : null;
});
}
});
// перезаписываю данные в кеше на актуальные
await this.cachingService.set('dataBonuses', activeBonusesKeys, true);
}
}
в комментарии написал про cashingService