博客
关于我
环信SDK 踩坑记webIM篇(一)
阅读量:369 次
发布时间: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/

    你可能感兴趣的文章
    Vue——mock模拟数据的使用
    查看>>
    Nginx配置反向代理与负载均衡
    查看>>
    高阶函数reduce
    查看>>
    Lionheart万汇:布林线双底形态分析技巧
    查看>>
    Lionheart万汇:台积电大幅提升资本开支,2021有望续创辉煌
    查看>>
    Lionheart万汇:新年消费结构中贵金属交易机会
    查看>>
    LHCM万汇:在需求上升中,美国贸易赤字创下历史新高
    查看>>
    Mybatis的入门01
    查看>>
    Vue01常见指令,axios
    查看>>
    Vue路由嵌套刷新后页面没有重新渲染
    查看>>
    Vue使用bus进行组件间、父子路由间通信
    查看>>
    数据库三个级别封锁协议
    查看>>
    函数与指针分析、回调函数
    查看>>
    类的实例
    查看>>
    tomcat加载部署webapps目录下的项目
    查看>>
    ACM/NCPC2016 C Card Hand Sorting(upc 3028)
    查看>>
    方法重写
    查看>>
    Threading Programming Guide(多线程编程指南)
    查看>>
    Java求逆波兰表达式的结果(栈)
    查看>>
    SDWebImage--http图片加载不出来的问题
    查看>>