Heim >Web-Frontend >js-Tutorial >Polyfills 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.
`
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([]); }
});
};
`
. 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.
. 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
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.
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!