Aad*_*hah 16 javascript settimeout underscore.js
这是Underscore.js delay函数的源代码:
_.delay = function (func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function () { return func.apply(null, args); }, wait);
};
Run Code Online (Sandbox Code Playgroud)
这有什么不同setTimeout?为什么Underscore.js需要delay?
ale*_*lex 23
这是一种跨浏览器的方式,能够传递额外的参数,这些参数将作为回调的参数出现,比如setTimeout().这在IE中不起作用.
它可以让你的代码更漂亮......
setTimeout(_.bind(function() { }, null, "arg1"), 1e3);
Run Code Online (Sandbox Code Playgroud)
... ... VS
_.delay(function() { }, 1e3, "arg1");
Run Code Online (Sandbox Code Playgroud)
我同意这是一个不太有用的Underscore方法,这些方法在Naomi的回答中有所概述.
Tha*_*you 14
为什么Underscore.js有延迟功能?
因为愚蠢.这个特殊的underscore.js方法看起来非常愚蠢.
缺点
优点
本节故意留空
我只是学习使用javascript并做类似的事情
var hello = function() {
console.log("hello");
};
var delay = 1000;
window.setTimeout(hello, delay);
Run Code Online (Sandbox Code Playgroud)
简单吧?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!
Run Code Online (Sandbox Code Playgroud)
如果你不能依赖.bind你也可以使用封闭
window.setTimeout(function() {
duchess.meow("please feed me!");
}, 1000);
Run Code Online (Sandbox Code Playgroud)
哇,这很难.我要回到下划线,Lodash和jquery.这个JavaScript的东西很难!
小智 10
美学
该图书馆的作者,选择利用他/她的业余时间来开源,谈论它,用它作为一种方式向人们介绍javascript,也许让某人在闭幕范围内有一个灯泡时刻认为有了这个,图书馆的吸引力得到了提升.
孤立地争论这个功能的相关性就像争论绘画或其他工艺的相关性.有些人可能喜欢它,有些人可能不喜欢.
你可以自由喜欢或不喜欢.我个人而言,更喜欢刚刚进入点的库.
_.delay, _.defer, _.throttle, _.after 有一个流动恕我直言,读取比窗口更好.
最重要的是,我通常也喜欢编写节点服务器端(nodejs)而不必切换/进/出模式...尝试window.timeout在节点中使用,看看会发生什么.