Processamento assíncrono de pedidos com timeout

TypeScript Medium async

Tarefa «Processamento assíncrono de pedidos com timeout»

Escreva uma função assíncrona processOrders que recebe um array de objetos de pedidos (cada um com os campos id: number e delay: number). Para cada pedido, crie uma operação assíncrona que é executada após delay milissegundos (use setTimeout). Se a operação não for concluída em 1000 ms, ela deve ser rejeitada com o erro 'Timeout'. A função deve retornar um array de resultados na ordem dos pedidos originais: para os bem-sucedidos — {id, status: 'ok'}, para os rejeitados — {id, status: 'timeout'}. Use Promise.allSettled e uma promise auxiliar com timeout.

Formato de Entrada

A primeira linha contém o número n (quantidade de pedidos). Em seguida, n linhas, cada uma contendo dois números: id e delay.

Formato de Saída

n linhas, cada uma no formato: id status (ok ou timeout).

Exemplos

Exemplo 1

ENTRADA
Hello World
SAÍDA
3

Exemplo 2

ENTRADA
Hello world
SAÍDA
2

Exemplo 3

ENTRADA
2 10 1200 20 800
SAÍDA
10 timeout 20 ok

Exemplo 4

ENTRADA
JavaScript
SAÍDA
3
main.ts