javascript大量推送数据如何快速处理?

后端实现了websocket主动推送,现在想在网页上显示推送的数据,但是由于推送的数据量特别庞大,自己的处理比较缓慢,不但造成了数据推送的延迟,页面也特别卡顿,进行点击button等组件的操作也特别卡顿。我在websocket的on_message下是这样处理的:

var _on_message = function(evt) {
    try {
        var evt_obj = JSON.parse(evt.data);
        if (evt_obj['type'] == 'msg') {
            var data = evt_obj['data'];

            // 屏幕被分成了四块 ,分别推送到四块上;
            // 这里分成四块也是个大问题?
            for (var i = 0; i < _chat_list.length; i++) {
                // 这里也许还有一些正则匹配
                panel_dict[ch].add_msg(data);
            }

        } else {
            console.log("recv msg: ", evt_obj);
        }

    } catch (err) {
        console.error(err);
    }
};

我想这着把数据接收到一个list,在使用setInterval来慢慢处理显示这些数据,但是这样的话数据还是不实时的,有的数据到了但是过了一段时间才显示。头疼ing

本人前端菜鸟,不知道有什么好的处理办法或者解决方案呢?

阅读 8.2k
3 个回答

最后除了使用 setInterval,还在推送前拼接 DOM,减少直接的 DOM 操作,目前使用起来还不错。

以上,很久之后的自问自答。

新手上路,请多包涵

楼主,现在有更好的办法吗?我也遇到一样的情况,先把数据存起来,再使用setInterval去取数据,做dom处理,感觉会出差错

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题