Javascript 下划线\延迟执行
为什么第一次实施拖延不起作用 另外,第三个在不使用Array.prototype.slice.call的情况下如何工作Javascript 下划线\延迟执行,javascript,delay,Javascript,Delay,为什么第一次实施拖延不起作用 另外,第三个在不使用Array.prototype.slice.call的情况下如何工作 _.delay = function(func, wait) { var args = Array.prototype.slice.call(arguments, 2); return setTimeout(func(args), wait); }; _.delay = function(func, wait) { var args = A
_.delay = function(func, wait) {
var args = Array.prototype.slice.call(arguments, 2);
return setTimeout(func(args), wait);
};
_.delay = function(func, wait) {
var args = Array.prototype.slice.call(arguments, 2);
return setTimeout(function() { return func.apply(this, args); }, wait);
};
_.delay = function(func, wait) {
return setTimeout.apply(this, arguments);
};
为什么第一次实施拖延不起作用
因为设置超时(func(args),等待)调用函数。马上在将调用结果传递到setTimeout
之前。但这确实需要回调函数稍后调用
另外,第三个在不使用Array.prototype.slice.call的情况下如何工作
_.delay = function(func, wait) {
var args = Array.prototype.slice.call(arguments, 2);
return setTimeout(func(args), wait);
};
_.delay = function(func, wait) {
var args = Array.prototype.slice.call(arguments, 2);
return setTimeout(function() { return func.apply(this, args); }, wait);
};
_.delay = function(func, wait) {
return setTimeout.apply(this, arguments);
};
因为它也直接接受,而不仅仅是数组。然而,我猜你真的想知道为什么
_.delay = function(func, wait, ...args) {
return setTimeout(func, wait, ...args); // using rest arguments
};
工作?因为这就是处理多余参数1的方法-它将它们传递给延迟的func
调用
1:在大多数实现中。老IE不行。第四个:.delay=setTimeout
:-)哎呀,实际上第三个和第四个都不行:错了。您需要使用.apply(窗口,参数)
或\uu0.delay=setTimeout.bind(窗口)
。