Heim > Web-Frontend > js-Tutorial > Können Versprechen storniert werden? Ein tiefer Einblick in die Abbruchmechanismen in JavaScript

Können Versprechen storniert werden? Ein tiefer Einblick in die Abbruchmechanismen in JavaScript

DDD
Freigeben: 2024-11-02 22:47:03
Original
644 Leute haben es durchsucht

 Can Promises Be Cancelled? A Deep Dive into Cancellation Mechanisms in JavaScript

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

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.'))
Nach dem Login kopieren
Nach dem Login kopieren

}
});

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.'))
Nach dem Login kopieren
Nach dem Login kopieren

});
}

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
Nach dem Login kopieren

});
}

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!

Quelle:php.cn
Vorheriger Artikel:Wie erhalte ich die RGB-Farbe eines Canvas-Pixels unter dem Mauszeiger? Nächster Artikel:Wie kann der Google Maps API OVER_QUERY_LIMIT-Fehler in Version 3 verhindert werden?
Erklärung dieser Website
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage