Asynchrone Kette mit Timeouts und Prioritäten

JavaScript Hard promises

Aufgabe «Asynchrone Kette mit Timeouts und Prioritäten»

Implementieren Sie die Funktion asyncChain(tasks, timeout), die ein Array von Aufgaben (Funktionen, die Promises zurückgeben) und einen Timeout in Millisekunden akzeptiert. Die Funktion soll die Aufgaben nacheinander ausführen, jedoch mit der Möglichkeit, eine Aufgabe zu überspringen, wenn ihre Ausführung den angegebenen Timeout überschreitet. Wenn eine Aufgabe nicht innerhalb des Timeouts abgeschlossen wird, soll sie abgelehnt werden und die Kette mit der nächsten Aufgabe fortgesetzt werden. Die Ergebnisse erfolgreich ausgeführter Aufgaben werden in einem Array gesammelt und zurückgegeben. Wenn alle Aufgaben übersprungen wurden, geben Sie ein leeres Array zurück. Beachten Sie die Fehlerbehandlung: Wenn ein Promise mit einem Fehler endet, gilt dies ebenfalls als Überspringen der Aufgabe.

Eingabeformat

Erste Zeile: Zahl n – Anzahl der Aufgaben. Dann n Zeilen, jede enthält zwei ganze Zahlen: delay und result. delay – Verzögerung vor der Auflösung des Promises (ms), result – Wert, den das Promise zurückgibt. Letzte Zeile: timeout – maximale Ausführungszeit einer Aufgabe (ms).

Ausgabeformat

Array der Ergebnisse erfolgreich ausgeführter Aufgaben (Zahlen), getrennt durch Leerzeichen. Wenn das Array leer ist, geben Sie 'none' aus.

Beispiele

Beispiel 1

EINGABE
2 300 10 200 20 250
AUSGABE
20

Beispiel 2

EINGABE
1 500 100 400
AUSGABE
none

Beispiel 3

EINGABE
Integer 5 push 10 push 20 peek pop pop
AUSGABE
none
main.js