Vue · Middle · Pytanie 3 z 75
Jak anulować nieaktualne żądanie, gdy obserwowane id szybko się zmienia (Vue 3.5+)?
watch(id, async (newId) => {
const controller = new AbortController();
onWatcherCleanup(() => controller.abort());
data.value = await fetch(`/api/items/${newId}`, { signal: controller.signal }).then((r) => r.json());
});- ✓Poprawna odpowiedź: Zarejestrować sprzątanie przez
onWatcherCleanup, które działa przed następnym wywołaniem i przy zatrzymaniu - 2Watchery automatycznie anulują żądania
fetch - 3Użyć
{ deep: true }w watcherze
Wyjaśnienie
Bez sprzątania wolna stara odpowiedź może nadpisać nowsze dane. Przed 3.5 robiło się to samo przez argument onCleanup callbacku.