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