You need to enable JavaScript to run this app. 如何让for of循环仅在my_value非空时才进入下一次迭代?
优惠活动
大模型
产品
解决方案
定价
更多

如何让for of循环仅在my_value非空时才进入下一次迭代?

问题原因

你的原有实现存在两个核心问题,所以无法达到预期效果:

  1. do...while(0) 本身只会执行1次,无论my_value是否为空都会直接结束循环,进入下一轮for of迭代,完全没有重试等待的逻辑
  2. my_value是在do块内部声明的块级作用域变量,外部无法访问,判断逻辑也会受影响

正确实现

for (const element of $array) {
    let my_value
    // 循环重试直到拿到非空的my_value
    do {
        my_value = await GM.getValue("my_value")
        // 可选:空值时增加100ms延时,避免高频调用浪费性能,可根据需求调整时长
        if (!my_value) await new Promise(resolve => setTimeout(resolve, 100))
    } while (!my_value)
    // 到此处my_value已保证非空,可继续写当前迭代的后续业务逻辑
}

注意事项

如果你的业务场景里0、false等假值属于合法有效值,只有null、undefined才算空值,可以把循环判断条件修改为while (my_value == null),避免把合法假值判定为空进入无限等待。

内容的提问来源于stack exchange,提问作者Henrik Petterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 08:06:10