@老虎会游泳,嗯,但是@残缘,这个例子来说,应该不是所谓竞态条件导致的(这里并不依赖顺序),收到消息后 document.querySelector('#chat-${msg.byuid}')选择到左边列表中的某一个 DOM 进行操作,并把数据保存在 localStorage里,如果说AI和老虎会游泳同时发了消息,那这两条消息都会存在的,由于是单线程,这里数据也是可以正确保存(在单线程里没有同时)。万万不会出现 A 的 消息 显示在 B 的消息列表里。
@rkonfj,Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
at appendChatList (22780_public_hu60bot.js:172:41)
at 22780_public_hu60bot.js:129:13
at Array.forEach (<anonymous>)
at renderChatList (22780_public_hu60bot.js:125:25)
at initChatWindowData (22780_public_hu60bot.js:100:5)
at initHu60botChat (22780_public_hu60bot.js:96:5)
at startPlugin (22780_public_hu60bot.js:18:5)
at 22780_public_hu60bot.js:654:1
@rkonfj,会。异步操作(promise、then、await)会重新排序,所以看起来连续的流程可以被中断,另一个事件触发器此时就有机会运行。
也就是说,在第一条消息还没有完成上屏时收到第二条消息,就会发生竟态条件。必须手动进行同步才能避免此类情况。
@老虎会游泳,嗯,但是@残缘,这个例子来说,应该不是所谓竞态条件导致的(这里并不依赖顺序),收到消息后
document.querySelector('#chat-${msg.byuid}')
选择到左边列表中的某一个DOM
进行操作,并把数据保存在localStorage
里,如果说AI
和老虎会游泳
同时发了消息,那这两条消息都会存在的,由于是单线程,这里数据也是可以正确保存(在单线程里没有同时)。万万不会出现 A 的 消息 显示在 B 的消息列表里。另外,该截图里出现 2 个
老虎会游泳
应该是之前的BUG导致的。之前的 BUG 是:打开多个标签页,产生多个 WebSocket 连接,每个连接都收到消息后,都更新 localStorage,导致同一个消息在 localStorage 里有多条,渲染时就渲染了多个@rkonfj,哦哦
@老虎会游泳,不过确实是有多线程场景的,多个标签页是多线程,同时操作 localStorage 应该会有问题,有什么好方法吗?
@rkonfj,
使用唯一key进行存储,比如msg的id
@rkonfj,Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
at appendChatList (22780_public_hu60bot.js:172:41)
at 22780_public_hu60bot.js:129:13
at Array.forEach (<anonymous>)
at renderChatList (22780_public_hu60bot.js:125:25)
at initChatWindowData (22780_public_hu60bot.js:100:5)
at initHu60botChat (22780_public_hu60bot.js:96:5)
at startPlugin (22780_public_hu60bot.js:18:5)
at 22780_public_hu60bot.js:654:1
@旧人,应该不会啊,有谁能一起看看,这
chatItem.querySelector('.clearChat')
为什么有时会为null
https://github.com/rkonfj/hu60bot/blob/fde7f96a6ad55b353a88edb5587f17fd86c03677/ui/hu60bot.js#L144-L172
@rkonfj,我这突然没有小老虎了,控制台就报错了
@rkonfj,小老虎的界面在夜间模式效果很差
@胡图图,@老虎会游泳,👌🏻
这三个单引号是什么意思?@老虎会游泳
@胡图图,那是markdown代码高亮标记。@rkonfj 没有对会话做markdown解析。
@rkonfj,1920x1080,1.25倍缩放,布局溢出屏幕
希望不要禁用滚动条,这样就算溢出也能自己滚动。
@老虎会游泳,做了一个简单的动态适配。现在应该可以适配任何屏幕和缩放比例了
@rkonfj,好