20 lines
494 B
JavaScript
20 lines
494 B
JavaScript
|
/**
|
||
|
* @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
|
||
|
*/
|