-
-
Notifications
You must be signed in to change notification settings - Fork 61
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Description / 问题描述
问题描述
在 src/background.js 中存在大量固定的 setTimeout 等待时间,导致同步过程耗时过长。这些固定等待不能根据实际加载情况调整,即使页面已经加载完成,仍然需要等待固定的时间。
具体位置
例如网易号
影响
- 即使页面已经加载完成,程序仍需等待固定时间
- 多个平台同步时,累计等待时间过长
- 用户体验下降,同步效率低
建议解决方案
- 使用
waitForElement函数替代固定等待,实际检测元素是否出现 - 对于已有
waitForElement的地方,去掉额外的setTimeout - 缩短必要的固定等待时间,比如从 3000ms 减少到 500ms
Steps to Reproduce / 复现步骤
- 打开浏览器开发者工具,切换到 Console 面板
- 启动同步操作,选择同步到多个平台(例如:微信公众号、百度千帆、抖音等)
- 观察 Console 日志和同步过程所花费的时间
- 会发现即使页面已经加载完成,程序仍然在等待固定时间(可以在日志中看到空白的等待阶段)
Expected Behavior / 预期行为
程序应该能够动态检测页面加载状态,一旦需要的元素出现,就立即继续执行,而不是等待固定的时间。这样可以:
- 大大缩短同步总耗时
- 提高用户体验
- 更好地适应不同网络环境和设备性能
已有部分代码使用了 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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working