Polyfills von Promise.all()
Funktion von Promise.all()
Eingabe: Es braucht eine Reihe von Versprechen (nicht notwendig)
Ausgabe: Es wird ein Versprechen zurückgegeben, das eine Reihe von Ergebnissen aller Erfolgsversprechen enthält.
Hinweis: Wenn ein Versprechen fehlschlägt, wird es sofort abgelehnt.
Code für Promise.myAll()
`
Promise.myAll = Funktion (Versprechen) {
neues Versprechen zurückgeben (Funktion (auflösen, ablehnen) {
// Überprüfen Sie, ob die Eingabe ein Array ist
if (!Array.isArray(promises)) {
Return Reject(new TypeError("Argument muss ein Array sein"));
}
let results = []; let completedPromises = 0; promises.forEach(function (promise, index) { // Use Promise.resolve to handle non-promise values Promise.resolve(promise) .then(function (value) { results[index] = value; completedPromises += 1; // If all promises are resolved if (completedPromises === promises.length) { resolve(results); } }) .catch(function (error) { reject(error); // Reject if any promise fails }); }); // Handle case with empty array of promises if (promises.length === 0) { resolve([]); }
});
};
`
1. Wenn alle Versprechen erfolgreich gelöst wurden
. Alle Versprechen werden aufgelöst und ihre Ergebnisse werden im Ergebnisarray gespeichert.
. Wenn die Anzahl der aufgelösten Versprechen der Länge des Eingabearrays entspricht, wird das äußere Versprechen mit dem Ergebnisarray aufgelöst.
2. Warum Promise.resolve() verwenden?
. Es ist nicht notwendig, dass in einer Reihe von Versprechen jeder Wert ein Versprechen sein muss, er kann ein beliebiger Wert sein – eine Zahl, eine Zeichenfolge oder eine beliebige synchrone Funktion.
Wenn der übergebene Wert bereits ein Versprechen ist, wird das gleiche Versprechen zurückgegeben, um sicherzustellen, dass kein zusätzlicher Umbruch oder keine Änderung erfolgt.
Wenn der übergebene Wert kein Versprechen ist, wird der Wert in ein aufgelöstes Versprechen verpackt, sodass er wie ein Versprechen behandelt und mit .then() behandelt werden kann
3. Warum Promise.resolve(), warum nicht Promise.reject()
damit es mit dem Wert aufgelöst wird. Wenn wir „Reject“ verwenden, wird es im Catch-Block abgefangen und der Wert wird als Fehler betrachtet.
4. Was passiert, wenn ein Versprechen fehlschlägt?
- Dies löst den Reject()-Aufruf des äußeren Versprechens aus, wodurch Promise.myAll() sofort abgelehnt wird.
- foreach-Schleife wird fortgesetzt, während das Programm synchronisiert wird
- Der Rest des Versprechens wird aufgelöst und sein Wert wird dem Ergebnis hinzugefügt, aber als abgeschlossenes Promise!=promises.length wird es nicht aufgelöst, und wenn es trotzdem versucht wird, wird es ignoriert, da sich Promise.myAll() jetzt nicht im Status „Ausstehend“ befindet.
Wenn Sie noch Fragen haben, stellen Sie diese gerne in den Kommentaren!
Das obige ist der detaillierte Inhalt vonPolyfills von Promise.all(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...
