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