the*_*ore 1 javascript underscore.js
我很好奇为什么用 _.throttle 包装函数在函数声明中不起作用。此函数表达式的行为符合预期:
var myFunc = _.throttle(function(){
console.log("I'm throttling");
}, 1000);
Run Code Online (Sandbox Code Playgroud)
虽然这不会:
function myFunc(){
return _.throttle(function(){console.log("I'm throttling");}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
任何见解将不胜感激。
_.throttle将返回当前函数的节流版本。在第一种情况下,您正在调用_.throttle,并且您正在获取受限制的函数对象。所以,当你简单地做
myFunc();
Run Code Online (Sandbox Code Playgroud)
它调用您的实际功能。但在第二种情况下,您正在从myFunc函数返回受限制的函数。因此,在您调用 之前myFunc,_.throttle根本不会调用 。您必须调用外部函数来获取受限制的版本,然后调用该函数来获取结果,如您所料。
myFunc()();
Run Code Online (Sandbox Code Playgroud)
正如 idbehold 在评论中指出的那样,您应该将结果存储myFunc()在一个变量中,然后在后续调用中使用它,就像这样
var throttledVersion = myFunc();
throttledVersion();
throttledVersion();
...
Run Code Online (Sandbox Code Playgroud)
但更喜欢第一个版本。
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |