我目前正在将我们的Backbone应用程序转换为ES6语法,例如这样:
action: function(e){},
变为
action(e) {}
但是,现在我有了这段代码:
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500);
}
我似乎无法找到如何将其转换为有效的语法。 我试过了
throttleEvent _.throttle((e) => {
//do stuff
}, 500);
}
和
throttleEvent() {
return _.throttle((e) => {
//do stuff
}, 500);
}
但这些都无法奏效。
帮助将此转换为有效语法将不胜感激。
答案 0 :(得分:3)
嗯,我不太确定短语法是否适用于您的示例。
让我们看看你的开始
action: function(e){},
你有一个对象,该对象有一个名为“action”的属性,该属性包含一个函数,以后可以被obj.action()调用。
现在举例到
throttleEvent: _.throttle(function(e) {}
你有一个对象,它有一个名为throttleEvent的属性。但主要的区别在于价值。该值是函数_.throttle()的返回值。
摘自文档(https://lodash.com/docs/4.17.4#throttle)
创建一个限制函数,每个等待毫秒最多只调用一次func
因此,您的属性实际上包含您从库中返回的函数。这就解释了为什么你的第二种方法不起作用。因为在此版本中每次都会调用object属性,所以创建一个新的限制功能。 (对于你的第一个解决方案,我认为这是无效的语法)
我认为如果你真的想要使用短语法,那么最好的方法是,先将油门函数分配给变量,然后再使用它
例如像
这样的东西const throttleFunction = _.throttle((event) => {
//do stuff
}, 500);
const obj = {
throttleEvent(event): any {
return throttleFunction(event);
},
};
但接下来是决定ES6语法在这种情况下是否有意义,或者你是否坚持使用原始版本
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500)
仅仅因为可用的语法不同,并不意味着您总是必须使用新的语法。在某些情况下,“旧的”实际上更有意义
答案 1 :(得分:0)
尝试这种语法:
_.throttle(() => //Do stuff, 5000)