这是一个我知道很简单的问题,但我还是被困住了。如果你能帮我找出我的代码中遗漏了什么,我会很感激的。我需要通过两个测试,1)应该在特定的等待时间之后执行函数,2)应该已经成功地传递了函数参数。下面的说明和我的代码一样。这里的问题是,代码通过了第一个测试,但没有通过第二个测试。
指令:
“将一个函数延迟给定的毫秒数,然后用所提供的参数调用它。原始函数的参数在等待参数之后传递。例如,_.delay(someFunction,500,'a','b')将在500 of后调用someFunction('a','b')
我的代码:
_.delay = function(func, wait) {
return setTimeout(function(){
return func.call(this, arguments);
}, wait);
};
发布于 2015-12-09 23:42:50
正如你所说:
原始函数的参数在等待参数之后传递。例如,_.delay(someFunction,500,'a','b')将在500 For之后调用someFunction('a','b')
你要做的不是someFunction('a','b')
,而是someFunction(someFunction, wait,'a','b')
因此,您需要做的是接受所有参数,但前两个参数除外,这可以通过执行var args = Array.prototype.slice.call(arguments,2)
完成。
而且,由于要传递数组,所以需要使用apply
而不是call
。apply
所以你的最终代码是这样的:
_.delay = function(func, wait) {
var args = Array.prototype.slice.call(arguments,2);
return setTimeout(function(){
return func.apply(this, args);
}, wait);
};
你可以随时看看下面记分表的注释源
https://stackoverflow.com/questions/34190876
复制相似问题