不确定如何将方法定义转换为 ES6
Unsure how to convert method definition to ES6
我目前正在将我们的 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);
}
但是这些都没有用。
帮助将其转换为有效语法将不胜感激。
试试这个语法:
_.throttle(() => //Do stuff, 5000)
嗯,我不太确定短语法是否适用于您的示例。
让我们看看你的开始
action: function(e){},
您有一个对象,该对象有一个名为 "action" 的 属性,并且 属性 包含一个稍后可以由 obj.action() 调用的函数。
现在举个例子
throttleEvent: _.throttle(function(e) {}
你又得到了一个对象,它有一个 属性 叫做 throttleEvent。但主要区别在于价值。该值是函数 _.throttle() 的 return 值 。
摘自文档 (https://lodash.com/docs/4.17.4#throttle)
Creates a throttled function that only invokes func at most once per every wait milliseconds
所以您的 属性 实际上拥有您从库中 return 得到的函数。这就解释了为什么你的第二种方法不起作用。因为在此版本中,每次 调用对象属性 时,都会创建一个新的 节流函数。
(对于你的第一个解决方案,我认为这是无效的语法)
如果你真的想使用短语法,我认为最好的方法是,将 throttle 函数分配给一个变量,然后再使用它
例如这样的东西
const throttleFunction = _.throttle((event) => {
//do stuff
}, 500);
const obj = {
throttleEvent(event): any {
return throttleFunction(event);
},
};
但是接下来要决定 ES6 语法在这种情况下是否有意义,或者你是否坚持使用原始版本
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500)
仅仅因为有不同的语法可用,并不意味着您总是必须使用新的语法。在某些情况下 "old one" 实际上更有意义
我目前正在将我们的 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);
}
但是这些都没有用。
帮助将其转换为有效语法将不胜感激。
试试这个语法:
_.throttle(() => //Do stuff, 5000)
嗯,我不太确定短语法是否适用于您的示例。
让我们看看你的开始
action: function(e){},
您有一个对象,该对象有一个名为 "action" 的 属性,并且 属性 包含一个稍后可以由 obj.action() 调用的函数。
现在举个例子
throttleEvent: _.throttle(function(e) {}
你又得到了一个对象,它有一个 属性 叫做 throttleEvent。但主要区别在于价值。该值是函数 _.throttle() 的 return 值 。
摘自文档 (https://lodash.com/docs/4.17.4#throttle)
Creates a throttled function that only invokes func at most once per every wait milliseconds
所以您的 属性 实际上拥有您从库中 return 得到的函数。这就解释了为什么你的第二种方法不起作用。因为在此版本中,每次 调用对象属性 时,都会创建一个新的 节流函数。 (对于你的第一个解决方案,我认为这是无效的语法)
如果你真的想使用短语法,我认为最好的方法是,将 throttle 函数分配给一个变量,然后再使用它
例如这样的东西
const throttleFunction = _.throttle((event) => {
//do stuff
}, 500);
const obj = {
throttleEvent(event): any {
return throttleFunction(event);
},
};
但是接下来要决定 ES6 语法在这种情况下是否有意义,或者你是否坚持使用原始版本
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500)
仅仅因为有不同的语法可用,并不意味着您总是必须使用新的语法。在某些情况下 "old one" 实际上更有意义