Javascript 通过调用以下形式延迟执行任何现有函数;函数“name.callAfter(ms,param1,param2,…”;
我最近收到一个面试问题,我没有正确回答。下面是: 编写一个函数Javascript 通过调用以下形式延迟执行任何现有函数;函数“name.callAfter(ms,param1,param2,…”;,javascript,delay,delayed-execution,Javascript,Delay,Delayed Execution,我最近收到一个面试问题,我没有正确回答。下面是: 编写一个函数callAfter的实现,该函数允许在指定的持续时间后调用任何函数。函数的输出应保持不变。函数应具有>以下语法: 示例1:假设您有一个名为sum的函数,如下所示: function sum(a, b) { console.log('Sum is: ', a + b); } 现在,您应该能够执行: sum.callAfter(5000, 8, 9); difference.callAfter(4000, 8, 6); 这应该在5
callAfter
的实现,该函数允许在指定的持续时间后调用任何函数。函数的输出应保持不变。函数应具有>以下语法:
示例1:假设您有一个名为sum
的函数,如下所示:
function sum(a, b) {
console.log('Sum is: ', a + b);
}
现在,您应该能够执行:
sum.callAfter(5000, 8, 9);
difference.callAfter(4000, 8, 6);
这应该在5秒钟后使用参数8和9调用函数sum
。
输出:“总和为:17”
示例2:对于具有以下实现的函数<代码>差异代码>:
function difference(a, b) {
console.log('Difference is: ', a-b);
}
您应该能够执行:
sum.callAfter(5000, 8, 9);
difference.callAfter(4000, 8, 6);
这将在4秒钟后使用参数8和6调用函数difference
。
输出:'差异为:2'
注意:我知道我可以在n秒后使用以下方法执行函数:
var delay_func = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
但是,我被要求在每个函数后附加一个callAfter
“子函数”,以方便调用:
<function_name>.callAfter(milliseconds, param1, param2, ...);
.callAfter(毫秒、参数1、参数2等);
我们知道如果我们在函数中添加一个函数。prototype
它可以在所有函数上调用。
因此,我们使用以下代码:
Function.prototype.callAfter = function (time, ...params) {
setTimeout(this(...params), time);
}
现在,定义的任何函数都有callAfter
方法
例如:
function sum(a, b) {
console.log('Sum is: ', a + b);
}
sum.callAfter(500, 3, 2) // output => Sum is: 5
或:
如果我清楚地理解了你应该使用的任务。 函数原型帮助您实现能够用于代码附加的每个函数的函数
Function.prototype.callAfter = function(delay = 4, arg1, arg2) {
setTimeout(() => {
return this.call(null, arg1, arg2);
}, delay)}
function summ ( arg1, arg2){
console.log('summ', arg1 + arg2);};
summ.callAfter(500, 5,6)
您可以通过向函数构造函数的原型对象添加方法来实现。这样,任何创建的函数都可以继承该方法。它被称为:
我相信你正在寻找类似的东西