Chaîne asynchrone avec délais d’attente et priorités

JavaScript Hard promises

Tâche «Chaîne asynchrone avec délais d’attente et priorités»

Implémentez la fonction asyncChain(tasks, timeout) qui prend un tableau de tâches (des fonctions retournant des promesses) et un délai d’attente en millisecondes. La fonction doit exécuter les tâches séquentiellement, avec la possibilité de sauter une tâche si son exécution dépasse le délai d’attente défini. Si une tâche ne s’exécute pas dans le délai timeout, elle doit être rejetée et la chaîne doit continuer avec la tâche suivante. Les résultats des tâches réussies sont collectés dans un tableau et retournés. Si toutes les tâches sont sautées, retourner un tableau vide. Faites attention à la gestion des erreurs : si une promesse se termine par une erreur, cela est également considéré comme un saut de tâche.

Format d\ entrée

Première ligne : le nombre n — nombre de tâches. Ensuite, n lignes, chacune contenant deux entiers : delay et result. delay — délai avant la résolution de la promesse (ms), result — valeur retournée par la promesse. Dernière ligne : timeout — temps d’exécution maximal pour une tâche (ms).

Format de sortie

Tableau des résultats des tâches réussies (nombres), séparés par des espaces. Si le tableau est vide, afficher 'none'.

Exemples

Exemple 1

ENTRÉE
2 300 10 200 20 250
SORTIE
20

Exemple 2

ENTRÉE
1 500 100 400
SORTIE
none

Exemple 3

ENTRÉE
Integer 5 push 10 push 20 peek pop pop
SORTIE
none
main.js