首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax聊天页面冻结浏览器窗口

Ajax聊天页面冻结浏览器窗口
EN

Stack Overflow用户
提问于 2017-02-13 01:25:34
回答 2查看 255关注 0票数 0

我有网站。我用jQuery AJAX编写了聊天页面。有3个ajax调用。

  1. AJAX请求发送新的聊天文本,
  2. 用于检测用户的AJAX请求正在键入
  3. 用于检测新消息的AJAX请求。

我使用JSON发送和接收用于聊天的低数据。我使用了最好的AJAX聊天技术,但是当我在输入框中输入消息或在聊天历史上上下滚动时,网页就会冻结。我不明白为什么书页会结冰。

首先,我获取了所有的聊天记录。我改变了它,所以它只获取新的消息,如果有,但这并没有解决我的问题。

其次,我尝试设置async=true或false --这并不能解决我的问题。它必须在不结冰的情况下正常工作,但会结冰。

截图在下面。

EN

回答 2

Stack Overflow用户

发布于 2017-02-13 01:50:35

您正在排队处理AJAX请求吗?

如果您使用的是$.Deferred,可以使用jQuery,也可以使用.queue(),或者直接将AJAX函数按顺序放置在函数中。或者,您可能需要在函数上设置/调整setTimeout

一个非常棒的开发人员(不是我) 开发了一个ajaxQueue插件能很好地处理这些事件。这里就是一个很好的例子。

票数 0
EN

Stack Overflow用户

发布于 2017-02-13 02:09:40

根据您的需求,我可以想象在实现上有两个可能的问题。

  1. 您有一个用户输入功能,这意味着您必须绑定一个键事件(键-向上,键-下,按下键),如果您没有取消您的事件处理程序,将有一个对每个字符键入的请求,并可能冻结浏览器。有一些易于使用的插件,用于破坏jQuery的功能.下面是一个示例http://benalman.com/projects/jquery-throttle-debounce-plugin/
  2. 在所有浏览器中,DOM操作都非常耗时。不像角度和反应,jQuery没有为你优化它。您必须尽量减少添加/更新/删除DOM元素。假设您获取消息,在执行DOM树中的任何操作之前,检查每个消息是否存在更改/它们是否存在。

基于async$.ajax()文档选项默认为true。您不需要自己添加它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42195337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档