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; }); }; };
|