Cadeia assíncrona com timeouts e prioridades

JavaScript Hard promises

Tarefa «Cadeia assíncrona com timeouts e prioridades»

Implemente a função asyncChain(tasks, timeout), que recebe um array de tarefas (funções que retornam promessas) e um timeout em milissegundos. A função deve executar as tarefas sequencialmente, mas com a possibilidade de pular uma tarefa se sua execução exceder o timeout especificado. Se uma tarefa não conseguir ser concluída dentro do timeout, ela deve ser rejeitada e a cadeia deve continuar com a próxima tarefa. Os resultados das tarefas concluídas com sucesso são coletados em um array e retornados. Se todas as tarefas forem puladas, retorne um array vazio. Observe o tratamento de erros: se a promessa for concluída com erro, isso também é considerado um pulo de tarefa.

Formato de Entrada

Primeira linha: número n — quantidade de tarefas. Em seguida, n linhas, cada uma contendo dois números inteiros: delay e result. delay — atraso antes da resolução da promessa (ms), result — valor que a promessa retorna. Última linha: timeout — tempo máximo de execução de uma tarefa (ms).

Formato de Saída

Array de resultados das tarefas concluídas com sucesso (números), separados por espaços. Se o array estiver vazio, exibir 'none'.

Exemplos

Exemplo 1

ENTRADA
2 300 10 200 20 250
SAÍDA
20

Exemplo 2

ENTRADA
1 500 100 400
SAÍDA
none

Exemplo 3

ENTRADA
Integer 5 push 10 push 20 peek pop pop
SAÍDA
none
main.js