因软件更新较快,部分文档内容与软件最新版本有所出入,请知悉。
循环处理列表中的每一项。
是循环的一种,另外一种循环模块是“重复”。
演示视频链接:在组合动作中使用循环
参数
【列表】要循环处理的列表变量。
【使用多线程】(1.7.4中增加)使用多线程同步处理列表里的项。基本的处理过程为:
- 循环处理列表中的每一项:
- 将项的值和计数 赋值到设定的变量;
- 开启一个新的线程执行循环中的子步骤;在这些步骤中,应该立即读取保存项值的变量(如上面截图中的text),否则50ms后循环到下一个项的时候,这个变量的内容就会被覆盖为下一项的值了。
- 等待50ms(为了让线程中的代码可以读取保存项值的变量);
- 处理下一项;
【为线程创建独立上下文】(1.39.11) 为每个线程创建一个独立上下文,避免多线程时数据冲突(参考问题)。
- 每个线程中读取到的“项”和“计数”的值都是准确的。
- 每个线程步骤中,对值类型的变量(如文本、数字)的读写,是操作变量在该线程中的副本,线程之间互不影响,不会更新到动作本身的变量中。(因此,如果步骤比较简单可以不需要再封装子程序了)
- 对于以引用方式传递的词典、列表等对象类型,当修改它们的内容时(如为词典增加键值对、更新列表的某一项等),会在整个动作范围内生效。
多线程使用提示
- 警告!在多线程运行的代码中更新相同的变量可能会产生冲突。
- 为避免log格式混乱,同步执行时调试运行log会被关闭。
- 一些跳转处理将会失效(如停止动作/停止循环等,具体需测试)。
- 可能存在其他潜在问题,请多测试动作。
输出
输出项将在每次循环时更新。 所以在循环内部,每次运行取到的变量是这次循环所对应的值。
【项】本次循环所要处理的列表元素的值。
【计数】当前是第几次循环,从0开始。
示例
更新说明
- 20230828 增加【为线程创建独立上下文】参数。