Асинхронная цепочка с тайм-аутами и приоритетами
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