Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich Promises in JavaScript für die Type-Ahead-Suche stornieren?

Wie kann ich Promises in JavaScript für die Type-Ahead-Suche stornieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 18:58:02833Durchsuche

 How Can I Cancel Promises in JavaScript for Type-Ahead Search?

Versprechen – ist es möglich, die Stornierung eines Versprechens zu erzwingen

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.

Verwendung von AbortController

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.

Alternativen

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.

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn