Skip to content

[Bug]: 网易号同步过程中存在过多固定等待时间 #145

@timerring

Description

@timerring

Description / 问题描述

问题描述

src/background.js 中存在大量固定的 setTimeout 等待时间,导致同步过程耗时过长。这些固定等待不能根据实际加载情况调整,即使页面已经加载完成,仍然需要等待固定的时间。

具体位置

例如网易号

影响

  • 即使页面已经加载完成,程序仍需等待固定时间
  • 多个平台同步时,累计等待时间过长
  • 用户体验下降,同步效率低

建议解决方案

  1. 使用 waitForElement 函数替代固定等待,实际检测元素是否出现
  2. 对于已有 waitForElement 的地方,去掉额外的 setTimeout
  3. 缩短必要的固定等待时间,比如从 3000ms 减少到 500ms

Steps to Reproduce / 复现步骤

  1. 打开浏览器开发者工具,切换到 Console 面板
  2. 启动同步操作,选择同步到多个平台(例如:微信公众号、百度千帆、抖音等)
  3. 观察 Console 日志和同步过程所花费的时间
  4. 会发现即使页面已经加载完成,程序仍然在等待固定时间(可以在日志中看到空白的等待阶段)

Expected Behavior / 预期行为

程序应该能够动态检测页面加载状态,一旦需要的元素出现,就立即继续执行,而不是等待固定的时间。这样可以:

  1. 大大缩短同步总耗时
  2. 提高用户体验
  3. 更好地适应不同网络环境和设备性能

已有部分代码使用了 waitForElement 函数,应该在所有地方都采用这种方式。

Suggested Implementation / 实现建议

具体修改建议

1. 统一使用 waitForElement 函数

对于所有需要等待页面元素出现的场景,都使用 waitForElement 函数替代固定的 setTimeout

例如,将:

await new Promise(resolve => setTimeout(resolve, 3000))
const editor = document.querySelector('.editor')

改为:

const editor = await waitForElement('.editor', 5000)

2. 缩短必要的等待时间

对于确实需要稳定性等待的场景(如等待 React 渲染),将等待时间从 2-3 秒缩短到 300-500ms。

3. 移除重复等待

在某些地方,代码已经使用了 waitForElement,但之前还有一个固定的 setTimeout,这种情况可以去掉前面的等待。

Platform / 平台

网易号

Browser / 浏览器

Chrome

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions