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 + */