【问题标题】:Implementation for a function 'callAfter' that enables any function to be called after some specified duration实现一个函数“callAfter”,它允许在某个指定的持续时间后调用任何函数
【发布时间】:2017-07-19 20:42:44
【问题描述】:

编辑:这不是如何在 setTimeout 中传递参数的重复。实际上,我想知道如何编写一个函数,作为预定义函数的方法调用,就像 setTimeout API 一样。

那么,我怎样才能为函数'callAfter'编写一个实现,使任何函数能够在具有某些参数的指定持续时间后被调用,语法如下:

示例:假设您有一个名为“sum”的函数,如下所示:

function sum(a, b) {
 console.log('Sum is: ', a + b);
}

现在您应该能够执行: sum.callAfter(5000, 8, 9);

它应该在 5 秒后使用参数 8 和 9 调用函数“sum”。

【问题讨论】:

标签: javascript chaining


【解决方案1】:

使用函数原型获得它:

Function.prototype.callAfter = function(){
    if(arguments.length > 1){
        var args = Array.prototype.slice.call(arguments);
        var time = args.splice(0,1);
        var func = this;
        setTimeout(function(){
            func.apply(null, args);
        }, time);
    }

}

【讨论】:

  • 很好的答案,但作为旁注,调整原生 JavaScript 对象的原型是不受欢迎的。它可以工作,但在维护代码和合并库时也会引起问题。
  • @zfrisch 是的。你能告诉我一个更好的解决方案吗?实际上,我正在寻找更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2019-02-21
相关资源
最近更新 更多