onValueChange继续充斥我的套接字服务器

时间:2018-01-23 14:10:21

标签: javascript sockets react-native socket.io

我有一个反应原生应用程序,滑块从0到100%。每次用户触摸此滑块onValueChange时,都会触发,通过套接字将更改后的值发送到服务器。

这是代码

       <Slider  
             step={1}
             minimumValue={0}
             maximumValue={100}
             value={this.state.value}
             onValueChange={val => {
               this.setState({ whiteValue: val })
               socket.emit('channel', val)
              }
            }
       />

问题在于每次用户触摸滑块时(即使他没有修改该值),onValueChange每0.3秒触发一次。

因为我希望通过套接字将更改后的值发送到我的服务器,所以服务器被值淹没,并且无法足够快地处理它们。

&#34;减少&#34;最好的方法是什么?发射率?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可能需要参考https://github.com/facebook/react/issues/2454,debouncing正是您所需要的,但您可能需要自己实现它。我很可能会这样做:

       <Slider  
             step={1}
             minimumValue={0}
             maximumValue={100}
             value={this.state.value}
             onValueChange={val => {
               if (this.oldVal === val) return;
               else {
                   this.oldVal = val;
                   this.setState({ whiteValue: val })
                   socket.emit('channel', val)
               }               
              }
            }
       />