每个

因软件更新较快,部分文档内容与软件最新版本有所出入,请知悉。

循环处理列表中的每一项。

是循环的一种,另外一种循环模块是“重复”。


演示视频链接:在组合动作中使用循环


参数

【列表】要循环处理的列表变量。

【使用多线程】(1.7.4中增加)使用多线程同步处理列表里的项。基本的处理过程为:

  • 循环处理列表中的每一项:
    • 将项的值和计数 赋值到设定的变量;
    • 开启一个新的线程执行循环中的子步骤;在这些步骤中,应该立即读取保存项值的变量(如上面截图中的text),否则50ms后循环到下一个项的时候,这个变量的内容就会被覆盖为下一项的值了。
    • 等待50ms(为了让线程中的代码可以读取保存项值的变量);
    • 处理下一项;

【为线程创建独立上下文】(1.39.11) 为每个线程创建一个独立上下文,避免多线程时数据冲突(参考问题)。

  • 每个线程中读取到的“项”和“计数”的值都是准确的。
  • 每个线程步骤中,对值类型的变量(如文本、数字)的读写,是操作变量在该线程中的副本,线程之间互不影响,不会更新到动作本身的变量中。(因此,如果步骤比较简单可以不需要再封装子程序了)
  • 对于以引用方式传递的词典、列表等对象类型,当修改它们的内容时(如为词典增加键值对、更新列表的某一项等),会在整个动作范围内生效。



多线程使用提示

  • 警告!在多线程运行的代码中更新相同的变量可能会产生冲突。
  • 为避免log格式混乱,同步执行时调试运行log会被关闭。
  • 一些跳转处理将会失效(如停止动作/停止循环等,具体需测试)。
  • 可能存在其他潜在问题,请多测试动作。


输出

输出项将在每次循环时更新。 所以在循环内部,每次运行取到的变量是这次循环所对应的值。

【项】本次循环所要处理的列表元素的值。

【计数】当前是第几次循环,从0开始。


示例

更新说明

  • 20230828 增加【为线程创建独立上下文】参数。

反馈与讨论

使用问题 · 146
炸鸡爱上冰可乐 2024-08-23 18:57 CL 2024-08-23 20:21
语雀在语雀上查看