PHP程序员一年从0-1学nodejs, react18, vue3 到用2个月完成120k RMB 项目

学好nuxt3, vue3, react18 也差不多快新年,我问刚好接到一个项目,是一个和区块链交易有关,叫“秒交易”,于是我和我伙伴结下这个项目约120k RMB,从3月10号开始到今天,差不多快2个月才搞定前台与后台。

nodejs, react18, vue3 透过 vscode 与 copilot 辅助,一切都很顺利,但是我这里唯一遇到难题就是 javascript setTimeout 跳针问题导致数据重叠,这个问题目前靠逻辑来删除重叠的数据。

不知道大家有遇到这个问题如何去解决?

本作品采用《CC 协议》,转载必须注明作者和本文链接
全栈程序员(Blockchain, Web3, Nuxt3+, vue3+, React18+, PHP, MySQL, HTML, CSS, JavaScrIpt/JQuery)
讨论数量: 2

1.使用 Vue 提供的 $nextTick 方法:在异步操作完成后,可以使用 $nextTick 来确保 DOM 更新完成后再执行相应操作,确保数据更新和视图更新同步进行,避免数据重叠问题。

eg:

setTimeout(() => {
  this.$nextTick(() => {
    // 在下一个 DOM 更新周期执行代码
  });
}, 0);

2.减少不必要的重渲染:如果你的数据更新非常频繁,可能导致性能问题或视图跳动。尽量避免在setTimeout中频繁更新大量数据,可以考虑使用防抖(debounce)或节流(throttle)技术来减少数据更新的频率。

3.检查代码逻辑是否有异常和共享状态的问题:确认你的代码逻辑是否有误。例如,是不是在不正确的生命周期钩子中操作数据,或者是否有多个地方操作了相同的数据造成的状态管理混乱。

4.使用计算属性或者观察者:如果某些数据的更新依赖于其他数据的变化,可能使用计算属性(computed)或者观察者(watch)可以提供更优雅的解决方案。

2周前 评论

我总结了,最后答案是 js 本身有的问题,settimeout 部分我也解决 ,频繁读mysql 都用redis 来解决。

在输入数据时,我也大量用transaction 机制,这个确实有解决大部分重叠问题,但是不是100%。

我是用. nodejs (API) + sequelize 来处理 mysql, 普通输入偶尔也会出现重叠(是偶尔,不是很常发生),我问唯一肯定可以解决是,我的重叠只发生同秒,只要我找到对的逻辑发生在同秒的事进行删除就可以了。

js 快是非常快,特别处理批量 bulkCreate 是不会发生重叠的,就是太快也成为它的弱点,快到翻车啊!现在的工作就是做删除重叠的事(它的重叠特征很容易看到的,就是在时间上出现同秒)

2周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!