Cadena asíncrona con tiempos de espera y prioridades

JavaScript Hard promises

Tarea «Cadena asíncrona con tiempos de espera y prioridades»

Implemente la función asyncChain(tasks, timeout), que recibe un array de tareas (funciones que devuelven promesas) y un tiempo de espera en milisegundos. La función debe ejecutar las tareas secuencialmente, pero con la posibilidad de omitir una tarea si su ejecución supera el tiempo de espera especificado. Si una tarea no se completa dentro del timeout, debe ser rechazada y la cadena debe continuar con la siguiente tarea. Los resultados de las tareas ejecutadas exitosamente se recopilan en un array y se devuelven. Si todas las tareas son omitidas, devolver un array vacío. Preste atención al manejo de errores: si una promesa termina con un error, esto también se considera una omisión de la tarea.

Formato de entrada

Primera línea: número n — cantidad de tareas. Luego n líneas, cada una contiene dos números enteros: delay y result. delay — retardo antes de resolver la promesa (ms), result — valor que devuelve la promesa. Última línea: timeout — tiempo máximo de ejecución de una tarea (ms).

Formato de salida

Array de resultados de las tareas ejecutadas exitosamente (números), separados por espacios. Si el array está vacío, mostrar 'none'.

Ejemplos

Ejemplo 1

ENTRADA
2 300 10 200 20 250
SALIDA
20

Ejemplo 2

ENTRADA
1 500 100 400
SALIDA
none

Ejemplo 3

ENTRADA
Integer 5 push 10 push 20 peek pop pop
SALIDA
none
main.js