每个
按列表逐项执行内部步骤。按次数循环请用重复。
当前模块定义
sys:each输入 10 · 输出 3 · 枚举 1
输入参数
- 列表
inputList必填要处理的列表
- 线程模式
useMultiThreadEnum可选⚠通常不要选择! 请阅读文档详细了解后再使用。
单线程(顺序执行)默认0多线程(同时执行)1 - 线程启动间隔
threadDelayInteger可选多线程运行时,每个线程之间的启动时间间隔毫秒数。
- 同时线程数
concurrentThreadNumInteger可选最多同时启动的线程数,请根据电脑配置和任务内容设置。
- 超时毫秒数
timeoutMsInteger可选所有线程开启后,等待的超时时间,单位:毫秒。-1:不设置超时时间
- WaitAny模式
waitAnyBoolean可选任意一个线程结束即可。
- WaitAny模式下自动取消其它分支
cancelRemainingOnWaitAnyBoolean可选启用WaitAny时,任一分支完成后请求取消其它未完成分支,并阻止其执行后续步骤。取消为协作式取消,不保证立即终止正在执行的步骤。
- 为线程创建独立上下文
useLocalContextBoolean可选此时只能读取变量,不能更新变量(词典、列表等引用传递的除外)
- 进度条标题
progressBarTitleText可选如果设置了此参数,则在循环过程中会显示一个进度条,标题为此参数的值。仅单线程支持。
- 失败后停止
stopIfFailBoolean可选失败后是否停止动作
输出参数
- 是否成功
isSuccessBoolean操作是否成功
- 项
itemAny列表中的每项,每次循环赋予当前项的值。在子步骤中应该对本输出进行处理。
- 计数
countInteger本次循环,处理到了第几项。
概述
把要处理的列表交给本模块,再把处理步骤拖进循环槽。每次循环会更新「项」和「计数」。
每个
演示视频:在组合动作中使用循环
参数说明
列表:要逐项处理的列表。
线程模式:默认 单线程(顺序执行)。多线程(同时执行) 请先读下面的限制,通常不要选。
线程启动间隔:仅多线程。每个线程之间的启动间隔,单位毫秒,默认 5。
同时线程数:仅多线程。最多同时启动的线程数,默认 4。按电脑和任务调整。
超时毫秒数:仅多线程。所有线程开启后的等待超时。-1 表示不超时。
WaitAny模式:仅多线程。任意一个线程结束即可继续后面的步骤。
WaitAny模式下自动取消其它分支:仅多线程。启用 WaitAny 时,任一分支完成后请求取消其它未完成分支,并阻止其执行后续步骤。取消是协作式的,不保证立刻停掉正在跑的步骤。
为线程创建独立上下文:仅多线程。每个线程有自己的上下文:
- 「项」和「计数」在各线程里都是当时那一项的值。
- 文本、数字等值类型读写的是该线程的副本,不会写回动作变量。
- 词典、列表等按引用传递的对象,改内容会作用到整个动作。
- 此时只能读取变量,不能更新变量(词典、列表等引用传递的除外)。
进度条标题:仅单线程。填写后循环过程中显示进度条,标题为此值。
失败后停止:失败后是否停止动作。默认开启。
输出
每次循环都会更新这些输出,循环内部取到的是这一项的值。
- 是否成功:操作是否成功。
- 项:当前列表元素。在子步骤里处理这一项。
- 计数:本次处理到了第几项。
限制与排障
多线程时不要同时改同一个变量,否则会冲突。同步执行时调试 log 会关掉,避免格式错乱。停止动作、跳出循环等跳转在多线程里可能失效,需要实测。其它潜在问题也请多测。
未开独立上下文时,子步骤应马上读出「项」;间隔过后循环会改写同一个变量。
示例动作
相关链接
更新历史
- 1.7.4 增加多线程。
- 1.39.11 / 20230828 增加「为线程创建独立上下文」。
更新于