From dbf39a2ad0dad08fec2eacaf74a0a0fa4e54e280 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Thu, 18 May 2023 20:10:57 +0200 Subject: [PATCH] =?UTF-8?q?problems(js):=20add=20=E2=80=9C2637.=20Promise?= =?UTF-8?q?=20Time=20Limit=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- problems/promise-time-limit.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 problems/promise-time-limit.js diff --git a/problems/promise-time-limit.js b/problems/promise-time-limit.js new file mode 100644 index 0000000..d4ce5d0 --- /dev/null +++ b/problems/promise-time-limit.js @@ -0,0 +1,19 @@ +/** + * @param {Function} fn + * @param {number} t + * @return {Function} + */ +var timeLimit = function(fn, t) { + return async function(...args) { + return new Promise((resolve, reject) => { + setTimeout(() => reject("Time Limit Exceeded"), t); + + fn(...args).then(resolve).catch(reject); + }); + } +}; + +/** + * const limited = timeLimit((t) => new Promise(res => setTimeout(res, t)), 100); + * limited(150).catch(console.log) // "Time Limit Exceeded" at t=100ms + */