gpt4 book ai didi

javascript - 尝试理解延迟函数的语法

转载 作者:行者123 更新时间:2023-11-28 06:36:37 26 4
gpt4 key购买 nike

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

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

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

为了让延迟功能发挥作用,为什么我们需要使用切片方法并调用(arguments,2),这部分是做什么的?如果我错了,请纠正我。延迟函数首先返回 setTimeout 来执行延迟,然后 setTimeout 函数返回 func.apply(null,args) 将所有信息从一个函数传递到另一个函数?但是“null”在这里做什么呢?

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

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

我不确定可选参数“稍后记录”在这里如何工作,因为我也不确定绑定(bind)方法在这里如何工作?你能给我一个更简单的例子吗?

最佳答案

setTimeoutwindow 上下文中执行代码,因此您必须注意在回调函数中为 this 提供正确的引用。 _.bind 为您完成。

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: ');

关于javascript - 尝试理解延迟函数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com