Чи можна використовувати async-операції в computed()?
Ні, не можна.
computed() має бути синхронним. Він одразу повертає значення, а не проміс.
Якщо всередині computed() використати async/await або fetch() - Angular видасть помилку або проігнорує зміни.
Чому?
Тому що computed() потрібен для миттєвих обчислень. Він працює як формула: вводиш числа - одразу бачиш результат. Якщо всередині буде затримка, сигнал не зможе відстежувати залежності правильно.
Що робити з async?
Якщо потрібно працювати з асинхронними даними (наприклад, HTTP-запитами), використовують:
effect()- для побічних async-операційRxJS(тимчасово)- або завантаження даних у
signalвручну:
ts
const user = signal<User | null>(null);
async function loadUser() {
const res = await fetch('/api/user');
const data = await res.json();
user.set(data);
}Висновок: computed() - тільки для синхронних залежностей. Усе async - через ефекти або вручну.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.