Javascript 服务器发送事件并响应setState()
我正在开发一个执行搜索的React应用程序。我通过流式服务器发送的事件从后端服务接收结果 我的React应用程序中有一个调用Update State函数的侦听器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(
//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()?虽然这并不理想,因为我希望结果出现时,他们到达,它确实给了我更多的结果,每秒比我目前得到的
谢谢你的帮助