@Crone1331

Почему асинхронный код себя так ведет?

У меня есть некоторый код в приложении 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
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы