1.题目描述

请你编写一个函数,它接受一个异步函数 fn 和一个以毫秒为单位的时间 t。它应根据限时函数返回一个有 限时 效果的函数。函数 fn 接受提供给 限时 函数的参数。

限时 函数应遵循以下规则:

如果 fn 在 t 毫秒的时间限制内完成,限时 函数应返回结果。
如果 fn 的执行超过时间限制,限时 函数应拒绝并返回字符串 “Time Limit Exceeded” 。

知识点:Promise.race

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var timeLimit = function (fn, t) {
return async function (...args) {
let timer;
const timeoutPromise = new Promise((res, rej) => {
timer = setTimeout(() => {
rej("Time Limit Exceeded");
}, t);
});

return Promise.race([fn(...args), timeoutPromise]).then((res) => {
clearTimeout(timer);
return res;
});
};
};