169 похожих чатов

Підкажіть по асінхронам будь ласка (здається я не те роблю). Є

методи.
Заповнити меню категорій:
fillCategories() {
this.getCategories();
let found = this.menu.find( e => e['group_key'] === 'categories');
this.$store.categories.forEach(el => found.items.push(el));
},
Він викликає це - отримати категорії з локалСторадж:
async getCategories() {
if (!window.localStorage.getItem('categories')) {
await this.getCategoriesFromDb();
}
this.$store.categories = JSON.parse(window.localStorage.getItem('categories'));
},
Цей, якщо категорій в стораджі нема, вікликає це 1 - отримати категорії з БД
getCategoriesFromDb() {
this.apiService.getCategoriesList(this.$store.categories).then((list) => {
window.localStorage.setItem('categories', JSON.stringify(list));
});
},

І от, у разі, коли потрібно отимати з БД, 1-й метод викидує помилку, що forEach не відбудеться з undefined, бо на той момент this.$store.categories ще не існує.

Що мені потрібно зробити асінхроним, щоб заповнення категорій відбулося без полмилок у разі отримання даних з БД?

8 ответов

6 просмотров

Я би замінив foreach на concat

Oleksandr
Я би замінив foreach на concat

found.items = [...found.items, ...(this.store.categories || []) Це якщо found.items - масив

Volodymyr 🇺🇦-Yefremov Автор вопроса
Volodymyr 🇺🇦-Yefremov Автор вопроса

спробував, працює, дякую! але моя проблема в іншому - саме в тому, що метод fillCategories не чекає закінчення отримання даних з БД; може цей метод також треба асинхроним зробити?

Volodymyr 🇺🇦 Yefremov
спробував, працює, дякую! але моя проблема в іншо...

Звичайно, якщо ви викликаєье асинхронну функцію із синхронної, результат виконання асинхронної ви не побачите Використовуйте await або then

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Карта сайта