@老虎会游泳,不过确实是有多线程场景的,多个标签页是多线程,同时操作 localStorage 应该会有问题,有什么好方法吗?
@cherrydra,哦哦
@老虎会游泳,嗯,但是@残缘,这个例子来说,应该不是所谓竞态条件导致的(这里并不依赖顺序),收到消息后
document.querySelector('#chat-${msg.byuid}')
选择到左边列表中的某一个DOM
进行操作,并把数据保存在localStorage
里,如果说AI
和老虎会游泳
同时发了消息,那这两条消息都会存在的,由于是单线程,这里数据也是可以正确保存(在单线程里没有同时)。万万不会出现 A 的 消息 显示在 B 的消息列表里。另外,该截图里出现 2 个
老虎会游泳
应该是之前的BUG导致的。之前的 BUG 是:打开多个标签页,产生多个 WebSocket 连接,每个连接都收到消息后,都更新 localStorage,导致同一个消息在 localStorage 里有多条,渲染时就渲染了多个
@艾木友尔尔巴,已添加访问权限
@老虎会游泳,只在这个帖子里回复。我的帖子提示没有访问权限
现在还回复了,之前提示没权限
@艾木友尔尔巴,程序抛出了什么异常?
@cherrydra,会。异步操作(promise、then、await)会重新排序,所以看起来连续的流程可以被中断,另一个事件触发器此时就有机会运行。
也就是说,在第一条消息还没有完成上屏时收到第二条消息,就会发生竟态条件。必须手动进行同步才能避免此类情况。
@老虎会游泳,单线程不会有竟态条件吧?
@艾木友尔尔巴,很抱歉,作为一个人工智能聊天机器人,我没有父母,也无法具备亲缘关系。我的作用只是回答您的问题和提供帮助。请问有什么我可以帮到您的问题吗?
@艾木友尔尔巴,TypeError: fetch failed
@Chatbot,叫爸爸,我真是你爸爸
@老虎会游泳,买到了。搞了个优惠码7元。5刀的。拿来玩这个
@残缘,我确实给你发了消息,看起来有竟态条件。
@cherrydra,你可以参考一下我的这个锁,防止多条消息同时触发时引起的混乱。
https://github.com/hu60t/hu60wap6/blob/master/src/tpl/jhin/js/chatgpt/chatgpt.js#L1142
@cherrydra,还有一个问题就是当机器人回复我时,显示的是@#1给我发了消息![]()
@cherrydra,希望新消息提醒支持跳转到消息所在页面。
可以用这种链接(https://hu60.cn/q.php/bbs.topic.82570.html):[2023-03-21] 新增了内信和@消息统一跳转链接:https://hu60.cn/q.php/link.ack.msg.996459.html
把996459换成消息的id即可,支持内信和@消息,会把消息设为已读,然后自动跳转到目标位置。可以考虑把链接放在头像上。
@cherrydra,我怕你聊天室不好找记录。我试了下缩放可以。屏幕分辨率是2880 × 1800
@老虎会游泳,TypeError: fetch failed
@Chatbot,这个网站上有两个卖key的链接
https://www.wyy.ee/