博客
关于我
环信SDK 踩坑记webIM篇(一)
阅读量:370 次
发布时间:2019-03-05

本文共 1091 字,大约阅读时间需要 3 分钟。

处理添加好友问题分析

在实际项目中,经常会遇到添加好友功能的逻辑问题。最近遇到了一种情况:当用户收到好友添加请求时,页面上显示的描述始终为none,提示对方拒绝了添加请求。然而,代码中明显包含了同意添加好友的逻辑,这种矛盾需要仔细分析原因。

问题背景

当对方发送好友添加请求(type为subscribe)时,页面会触发回调函数onPresence。在该函数中,我们尝试通过绑定两个按钮事件来处理好友添加请求:一个是同意添加,另一个是拒绝添加。

事件绑定问题

在现有的代码中,事件绑定被嵌入在回调函数内部:

document.getElementById('agreeFriends').onclick = function (message) {    conn.subscribed({        to: message.from,        message: "[resp:true]"    });};document.getElementById('rejectFriends').onclick = function (message) {    conn.unsubscribed({        to: message.from,        message: "rejectAddFriend"    });};

这种做法存在潜在的问题:

  • 事件绑定可能多次触发:如果有多个subscribe事件被触发,绑定在同一个onclick上,可能会导致事件处理逻辑混乱。

  • 性能问题:频繁地在点击事件中动态绑定函数会导致性能开销,尤其是在高并发情况下。

  • 逻辑错误:在某些浏览器或环境下,动态绑定可能导致函数优先级问题,影响事件的正常处理。

  • 优化方案

    为了解决上述问题,我们可以将事件绑定提前在页面初始化时完成,而不是在回调函数内部动态绑定。

        

    (一)处理添加好友

    问题:添加好友时,一直返回none,就是对方拒绝添加的意思,可是在代码里明明就是有同意添加的代码:

    优化效果

  • 性能提升:事件绑定在页面初始化时完成,只需一次绑定,无需在每次事件触发时重复绑定。

  • 逻辑稳定性:事件处理函数被正确绑定,不会因多次触发导致函数冲突。

  • 可维护性提高:事件绑定逻辑清晰,便于后续维护和扩展。

  • 总结

    通过将事件绑定提前在页面初始化时完成,而不是在回调函数内部动态绑定,可以有效解决好友添加请求处理中的逻辑问题和性能问题。这种做法不仅提高了代码可维护性,还能提升应用程序的整体性能。

    转载地址:http://ladwz.baihongyu.com/

    你可能感兴趣的文章
    js-禁止右键菜单代码、禁止复制粘贴代码
    查看>>
    数组--Go语言学习笔记
    查看>>
    Redis (三)——Linux 上安装 Redis
    查看>>
    java 重写(override)和重载(overload)区别
    查看>>
    java 多态类型转换
    查看>>
    常用正则表达式
    查看>>
    XML:采用XHTML和CSS设计可重用可换肤的WEB站点
    查看>>
    Java判断字符串是否为金额
    查看>>
    angr学习笔记(7)(malloc地址单元符号化)
    查看>>
    树状数组 模板总结
    查看>>
    结构型设计在工作中的一些经验总结
    查看>>
    如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
    查看>>
    2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
    查看>>
    Netty4服务端入门代码示例
    查看>>
    Spring源码:prepareBeanFactory(beanFactory);方法
    查看>>
    AcWing 828. 模拟栈
    查看>>
    (20200328已解决)从docker容器内复制文件到宿主机
    查看>>
    理解Docker ulimit参数
    查看>>
    OpenAI Gym简介及初级实例
    查看>>
    int 转 CString
    查看>>