当前位置: 首页 > 知识库问答 >
问题:

试图理解延迟函数的语法

东方国安
2023-03-14

delay函数:将函数延迟给定的毫秒数,然后使用提供的参数调用它。

是用下划线js编写的。注释来源:

_.delay = function(func, wait) {
    var args = slice.call(arguments, 2);
    return setTimeout(function(){
      return func.apply(null, args);
    }, wait);
  };

为了让delay函数工作,为什么我们需要使用slice方法和调用(参数,2),这部分做什么?如果我错了,请纠正我。delay函数首先返回setTimeout以执行延迟,而setTimeout函数返回func.apply(null,args)以将所有信息从一个函数传递到另一个函数?但是“null”在这里做什么?

当我们使用delay调用函数时,它会说:

var log = _.bind(console.log, console);
_.delay(log, 1000, 'logged later');
=> 'logged later' // Appears after one second.

我不确定可选参数“logged later”在这里是如何工作的,因为我也不确定bind方法在这里是如何工作的?你能给我举个简单的例子吗?

共有1个答案

艾宁
2023-03-14

setTimeout在窗口上下文中执行代码,因此您必须注意在回调函数中为this提供正确的引用。

var MyObject = function() {

  this.myVariable = 'accessible';

  this.myMethod = function(message) {
    console.log((this === window));
    console.log(message + this.myVariable);
  }

}

var myObject = new MyObject();

// it will throw an error, because the this.myVariable isn't accessible
_.delay(myObject.myMethod, 1000, 'the correct scope is: ');

// this will be binded to the correct scope
_.delay(_.bind(myObject.myMethod, myObject), 1000, 'the correct scope is: ');
 类似资料:
  • 本文向大家介绍GO语言延迟函数defer用法分析,包括了GO语言延迟函数defer用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer,一般用于异常处理、释放资源、清理数据、记录日志等。这有点

  • 我正在使用Mika Tuupola的jQuery延迟加载。 是否可以在每次延迟加载图像后调用函数。 我打算做的是跟踪图像的浏览次数。因此,如果图像是延迟加载的,这意味着用户已经看到了图像,我将通过在后台执行HTTP GET,将数据库中的计数器增加1。

  • 我试图在草图。我尝试了,但我想它不会工作,因为在Java中,它会阻止绘制图形。 基本上,我必须画一个三角形,在画三条边时会有延迟。 我该怎么做呢?

  • 我正在使用从2个Kafka主题中消费,每个主题都有6个分区。喷口进入单个螺栓以解压缩相关字节,然后进入第二个螺栓以进一步处理。 当我看到storm-ui的时候,这些数字没有多大意义,我希望有人能给我一些启示。 > Kafka的口水说它“收集”了3600个元组,失败了73M个元组。再看下一组的螺栓,我看到有的已经顶起了73米,有的已经顶起了1.3米(没有出现故障),而有的已经顶起了1.3米(没有出现

  • Flask 通常配合装饰器使用,装饰器使用非常简单,而且使您可以将 URL 和处理它的函数 放在一起。然而这种方法也有一种不足: 这就意味着您使用装饰器的代码必须在前面导入, 否则 Flask 将无法找到您的函数。 这对于需要很快导入的应用程序来说是一个问题,这种情况可能出现在类似谷歌的 App Engine 这样的系统上。所以如果您突然发现您的引用超出了这种方法可以处理 的能力,您可以降级到中央

  • 如何在Vertx中处理延迟作业列表(实际上是数百个HTTP GET请求,到禁止快速请求主机的有限API)?现在,我正在使用此代码,它被阻止,因为Vertx一次启动所有请求。希望在每个请求之间有5秒的延迟来处理每个请求。