In diesem Szenario führt der Benutzer eine Typ-Ahead-Suche durch, und jeder Tastendruck löst einen neuen Backend-Aufruf aus. Wenn der Benutzer schneller tippt, werden die älteren Anfragen irrelevant und müssen abgebrochen werden.
Promises in ES6 unterstützen in ihrer derzeitigen Form keine sofortige Stornierung. Allerdings wird derzeit daran gearbeitet, Abbruchfunktionen über AbortController einzuführen, ein plattformübergreifendes Grundelement, das asynchrone Vorgänge wie Netzwerkanforderungen abbrechen kann.
Als moderner Ansatz liefert AbortController ein Signal Objekt, das zum Abbrechen von Funktionen verwendet werden kann, die Versprechen zurückgeben. Die Syntax sieht so aus:
<code class="javascript">async function somethingIWantToCancel({ signal } = {}) { // Use the signal object to manually adapt code for cancellation support const onAbort = (e) => { // Handle cancellation logic here }; signal.addEventListener('abort', onAbort, { once: true }); try { const response = await fetch('...', { signal }); } catch (e) { if (e.name === 'AbortError') { // Deal with cancellation in caller } else { throw e; } } finally { signal.removeEventListener('abort', onAbort); } }</code>
In diesem Beispiel nimmt die Funktion SomethingIWantToCancel einen Signalparameter entgegen, der eine Instanz von AbortController ist. Der signal.addEventListener-Listener registriert einen Ereignishandler für das Abort-Ereignis, das ausgelöst wird, wenn der Vorgang abgebrochen wird. Der „finally“-Block stellt sicher, dass der Ereignis-Listener entfernt wird, wenn der Vorgang abgeschlossen ist.
Wenn AbortController keine Option ist, besteht ein anderer Ansatz darin, eine Bibliothek eines Drittanbieters wie Bluebird zu verwenden bietet Stornierungsmöglichkeiten.
Eine andere Alternative ist die Verwendung eines Stornierungstokens. Dazu gehört die Übergabe einer Funktion an die Methode, die aufgerufen werden kann, um die Anfrage abzubrechen.
Während ES6-Versprechen keine native Abbruchunterstützung bieten, bieten AbortController und andere Alternativen Möglichkeiten, asynchrone Vorgänge abzubrechen in modernem JavaScript. Für ältere Szenarien kann die Verwendung eines Stornierungstokens oder einer Drittanbieterbibliothek immer noch eine Lösung darstellen.
Das obige ist der detaillierte Inhalt vonWie kann ich Promises in JavaScript für die Type-Ahead-Suche stornieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!