0

语境

我正在构建一个 Redux 应用程序,并希望click事件mousemove处理程序根据应用程序状态进行更改。

为了实现这一点,我计划将一个click单一mousemove的处理程序附加到document. 这些将属于订阅 Redux 存储并知道相关状态的范围。

我看到了两种实现处理程序的策略:

  1. switch针对相关状态变量使用语句。这switch必须为每个触发的事件调用。
  2. 每当状态更新时,引用内部(到范围)scope._clickHandler和交换其所指对象的属性。scope._moveHandler

问题一:

如果我选择策略 2,我会希望我的mousemove处理程序大部分时间什么都不做。但是mousemove经常被解雇!可以绑定到该scope._moveHandler属性的性能最高的无操作函数是什么?

问题2:

switch在最好的情况下(w/r/t 问题 1),假设策略 1 中使用的语句必须测试 10 到 100 个案例,策略 2 会比策略 1 更高效吗?

澄清

在这种方法中,当事件触发时,总是会调用一个“委托”函数。该函数将根据状态属性做不同的事情,要么通过匹配 a 中的状态,要么switch简单地将不同的“委托”函数绑定状态。

问题 1 询问最佳的无操作“委托人”函数,而问题 2 询问switchmousemove回调中使用大块所导致的性能损失。

如果我们作为一个社区同意@nnnnnn 的直觉,那function(){}就是它对于无操作来说是最好的,那么我的问题就变成了:

哪个对性能更不利:无操作函数调用的开销,还是switch块中的相等比较?

4

0 回答 0