异步链式调用与超时及优先级

JavaScript Hard promises

任务 «异步链式调用与超时及优先级»

实现函数 asyncChain(tasks, timeout),该函数接收一个任务数组(返回 Promise 的函数)和以毫秒为单位的超时时间。该函数必须按顺序执行任务,但如果某个任务的执行时间超过指定的超时时间,则可以跳过该任务。如果任务未能在超时时间内完成,该任务应被拒绝,而任务链应继续执行下一个任务。成功完成的任务的结果会被收集到一个数组中并返回。如果所有任务都被跳过,则返回一个空数组。请注意错误处理:如果 Promise 以错误结束,这也被视为任务被跳过。

输入格式

第一行:数字 n — 任务数量。接下来 n 行,每行包含两个整数:delay 和 result。delay — 解决 Promise 之前的延迟(毫秒),result — Promise 返回的值。最后一行: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