Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器发送事件并响应setState()_Javascript_Reactjs_Server Sent Events - Fatal编程技术网

Javascript 服务器发送事件并响应setState()

Javascript 服务器发送事件并响应setState(),javascript,reactjs,server-sent-events,Javascript,Reactjs,Server Sent Events,我正在开发一个执行搜索的React应用程序。我通过流式服务器发送的事件从后端服务接收结果 我的React应用程序中有一个调用Update State函数的侦听器 //Event Listener this.eventSource.addEventListener("message", e => { this.updateResults(JSON.parse(e.data)); }); //UpdateResults updateResults(

我正在开发一个执行搜索的React应用程序。我通过流式服务器发送的事件从后端服务接收结果

我的React应用程序中有一个调用Update State函数的侦听器

//Event Listener
this.eventSource.addEventListener("message", e => {
            this.updateResults(JSON.parse(e.data));
});

//UpdateResults
updateResults(props) {
        // other code
        this.setState(previousState => ({searchResult: [...previousState.searchResult, props]}));
        // other code
}
到目前为止,它工作得很好,结果得到了正确保存,并且UI不会暂停。当我为后端发送的事件设置1秒或更长的延迟时,效果最好

当我删除这个延迟时,应用程序的UI会暂停并冻结一段时间,直到所有事件到达并且流结束

我认为我有这个问题,因为事件来得太快,在当前setState()完成之前触发下一个setState(),因此它会批处理多个setStates(),从而暂停我的UI。我试图避免这种情况,因为我的目标是创建一个对用户做出响应的应用程序,同时通过流式传输尽快提供结果

有谁能指导我如何最好地处理这种情况。到目前为止,我在想我应该做的是将数据保存到另一个变量上,并每1秒触发一次setState()?虽然这并不理想,因为我希望结果出现时,他们到达,它确实给了我更多的结果,每秒比我目前得到的

谢谢你的帮助