Vue · Middle · Frage 3 von 75
Wie bricht man eine veraltete Anfrage ab, wenn sich eine beobachtete id schnell ändert (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());
});- 1Aufräumen mit
onWatcherCleanupregistrieren - 2Nichts: Watcher brechen
fetch-Anfragen selbst ab - 3
{ deep: true }zu den Optionen des Watchers hinzufügen
Antwort zeigen
Richtige Antwort: Aufräumen mit onWatcherCleanup registrieren
Erklärung
Ohne Aufräumen kann eine langsame alte Antwort neuere Daten überschreiben. Vor 3.5 tat man dasselbe mit dem Argument onCleanup des Callbacks.