ES6-Versprechen selbst unterstützen keine Stornierung. Es wird jedoch daran gearbeitet, im ECMAScript-Standard eine Stornierung zu Versprechen hinzuzufügen.
In den WHATWG-Spezifikationen wurde ein Vorschlag zur Stornierung von Versprechen gemacht, der in die kommende ES2021-Version von JavaScript aufgenommen werden soll. Dieser Vorschlag führt eine neue AbortController-Schnittstelle ein, die zum Stornieren von Versprechen verwendet werden kann.
<br>const abortController = new AbortController();<br>const Promise = fetch('https://example.com', {<br> signal: abortController.signal<br>});</p> <p>abortController.abort();<br></ pre><br><p>In modernem JavaScript können Sie den AbortController verwenden, um Promise-basierte Aufgaben wie Abrufanforderungen oder andere asynchrone Vorgänge abzubrechen.</p></p> <p><p>Allerdings Wenn Sie AbortController nicht verwenden können, können Sie Ihren eigenen Abbruchmechanismus für vom Benutzer initiierte Vorgänge implementieren, z. B. im Falle einer asynchronen Formularübermittlung oder einer Netzwerkanfrage.</p><br><p><strong>Erstellen eines benutzerdefinierten Stornierungsmechanismus in JavaScript</strong>: Sie können einen einfachen Stornierungsmechanismus implementieren, indem Sie:</p><br><ul><br><li>einen CancellationToken erstellen, mit dem Sie die Stornierung stornieren können Vorgang.</li><br><li>Übergabe des CancellationToken an die asynchrone Aufgabe, die Sie abbrechen möchten.</li><br><li>Abbruch des CancellationToken, wenn der Benutzer den Abbruch initiiert.< /li><br></ul><br><p>Das CancellationToken kann als Promise mit einer cancel()-Methode implementiert werden, die das Promise ablehnt. Hier ist ein Beispiel:</p><br><pre class="lang-js Prettyprint-override"><br>const cancellingToken = new Promise((resolve,ject) => {<br> return { </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
}
});
Dann können Sie das cancellingToken an die asynchrone Aufgabe übergeben, die Sie abbrechen möchten, wie folgt:< ;/p>
<br>const asyncTask = (cancellationToken) => {<br> // Implementieren Sie hier Ihre asynchrone Aufgabe<br> return fetch('https://example.com', {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
});
}
Und schließlich können Sie die asynchrone Aufgabe abbrechen, indem Sie die Methode cancel() auf dem cancellingToken aufrufen, wie folgt :
<br>cancellationToken.cancel();<br>
Verwendung einer Bibliothek eines Drittanbieters: Wenn Sie eine Bibliothek eines Drittanbieters verwenden möchten, um die Stornierung zu implementieren, können Sie eine Bibliothek wie bluebird oder rxjs verwenden. Hier ist ein Beispiel mit Bluebird:
<br>const Promise = require('bluebird');<br>const cancellingToken = new Promise .CancellationToken();</p> <p>const asyncTask = () => {<br> return fetch('https://example.com', {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">signal: cancellationToken.signal
});
}
cancellationToken.cancel();
< ;/pre>
Dies sind nur einige Möglichkeiten, die Stornierung in JavaScript zu implementieren. Der beste Ansatz hängt von Ihren spezifischen Bedürfnissen ab.
Das obige ist der detaillierte Inhalt vonKönnen Versprechen storniert werden? Ein tiefer Einblick in die Abbruchmechanismen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!