Асинхронная цепочка с тайм-аутами и приоритетами

JavaScript Сложный promises

Задача «Асинхронная цепочка с тайм-аутами и приоритетами»

Реализуйте функцию asyncChain(tasks, timeout), которая принимает массив задач (функций, возвращающих промисы) и тайм-аут в миллисекундах. Функция должна выполнять задачи последовательно, но с возможностью пропуска задачи, если её выполнение превышает заданный тайм-аут. Если задача не успевает выполниться за timeout, она должна быть отклонена, а цепочка должна продолжиться со следующей задачей. Результаты успешно выполненных задач собираются в массив и возвращаются. Если все задачи пропущены, вернуть пустой массив. Обратите внимание на обработку ошибок: если промис завершается с ошибкой, это также считается пропуском задачи.

Формат ввода

Первая строка: число n — количество задач. Затем n строк, каждая содержит два целых числа: delay и result. delay — задержка перед разрешением промиса (мс), result — значение, которое возвращает промис. Последняя строка: timeout — максимальное время выполнения одной задачи (мс).

Формат вывода

Массив результатов успешно выполненных задач (числа), разделённых пробелами. Если массив пуст, вывести 'none'.

Примеры

Пример 1

ВВОД
2 300 10 200 20 250
ВЫВОД
20

Пример 2

ВВОД
1 500 100 400
ВЫВОД
none

Пример 3

ВВОД
Integer 5 push 10 push 20 peek pop pop
ВЫВОД
none
main.js