这是 Underscore.jsdelay
函数的源代码:
_.delay = function (func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function () { return func.apply(null, args); }, wait);
};
这与 有什么不同setTimeout
?为什么 Underscore.js 需要delay
?
这是 Underscore.jsdelay
函数的源代码:
_.delay = function (func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function () { return func.apply(null, args); }, wait);
};
这与 有什么不同setTimeout
?为什么 Underscore.js 需要delay
?
这是一种跨浏览器的方式,能够传递额外的参数,这些参数将作为回调的参数出现,例如setTimeout()
. 这在 IE 中不起作用。
它可以让你的代码更漂亮...
setTimeout(_.bind(function() { }, null, "arg1"), 1e3);
……对……
_.delay(function() { }, 1e3, "arg1");
我同意这是Naomi 的回答中概述的不太有用的 Underscore 方法之一。
为什么 Underscore.js 有延迟功能?
因为笨。这个特殊的 underscore.js 方法看起来很愚蠢。
缺点
优点
本节特意留空
我只想学习使用javascript并做类似的事情
var hello = function() {
console.log("hello");
};
var delay = 1000;
window.setTimeout(hello, delay);
很简单,对吧?Underscore.js 有时毫无用处。老实说,window.setTimeout
就其本身而言,它非常有用。
这是另一个示例,展示如何将 arg 传递给函数
var Cat = function(name) {
function meow(message) {
console.log(name, "says meow!", message);
}
this.meow = meow;
};
var duchess = new Cat("Duchess");
window.setTimeout(duchess.meow.bind(duchess, "please feed me!"), 2000);
// 2 seconds later
// => Duchess says meow! please feed me!
如果你不能依赖.bind
你也可以使用闭包
window.setTimeout(function() {
duchess.meow("please feed me!");
}, 1000);
哇,虽然这很难。我将回到下划线、lodash 和 jquery。这个 JavaScript 东西很难!
美学
该库的作者,他选择利用业余时间开源它,谈论它,用它作为向人们介绍 javascript 的一种方式,也许让某人在闭包范围内有一个灯泡时刻,他认为有了这个,图书馆的吸引力就增强了。
孤立地争论这个功能的相关性就像争论一幅画或其他工艺的相关性。有些人可能喜欢它,有些人可能不喜欢。
你可以自由地喜欢或不喜欢它。就个人而言,我更喜欢直截了当的库。
_.delay, _.defer, _.throttle, _.after
恕我直言,它的流量比窗口好。
除此之外,通常我也喜欢编写节点服务器端(nodejs),而不必切换/进入/退出模式......尝试window.timeout
在节点中使用,看看会发生什么。
不多,尽管它在主题上符合defer
, debounce
, 等等。这意味着您可以使用下划线包装符号:
_(yourfunction).delay(1000);
此外,它似乎不会让您摆脱调用 eval 的字符串参数。