跳到主要内容

每个

按列表逐项执行内部步骤。按次数循环请用重复

当前模块定义

sys:each程序流程Loop
标准模块
输入 10 · 输出 3 · 枚举 1

输入参数

  • 列表inputList必填

    要处理的列表

    填写 输入或变量
  • 线程模式useMultiThreadEnum可选

    ⚠通常不要选择! 请阅读文档详细了解后再使用。

    填写 固定输入默认 0
    单线程(顺序执行)默认0
    多线程(同时执行)1
  • 线程启动间隔threadDelayInteger可选

    多线程运行时,每个线程之间的启动时间间隔毫秒数。

    填写 固定输入条件 仅:1默认 5
  • 同时线程数concurrentThreadNumInteger可选

    最多同时启动的线程数,请根据电脑配置和任务内容设置。

    填写 固定输入条件 仅:1默认 4
  • 超时毫秒数timeoutMsInteger可选

    所有线程开启后,等待的超时时间,单位:毫秒。-1:不设置超时时间

    填写 固定输入条件 仅:1默认 -1
  • WaitAny模式waitAnyBoolean可选

    任意一个线程结束即可。

    填写 固定输入条件 仅:1默认 false
  • WaitAny模式下自动取消其它分支cancelRemainingOnWaitAnyBoolean可选

    启用WaitAny时,任一分支完成后请求取消其它未完成分支,并阻止其执行后续步骤。取消为协作式取消,不保证立即终止正在执行的步骤。

    填写 固定输入条件 仅:1默认 false
  • 为线程创建独立上下文useLocalContextBoolean可选

    此时只能读取变量,不能更新变量(词典、列表等引用传递的除外)

    填写 固定输入条件 仅:1默认 false
  • 进度条标题progressBarTitleText可选

    如果设置了此参数,则在循环过程中会显示一个进度条,标题为此参数的值。仅单线程支持。

    填写 输入或变量条件 仅:0
  • 失败后停止stopIfFailBoolean可选

    失败后是否停止动作

    填写 固定输入默认 true

输出参数

  • 是否成功isSuccessBoolean

    操作是否成功

  • itemAny

    列表中的每项,每次循环赋予当前项的值。在子步骤中应该对本输出进行处理。

  • 计数countInteger

    本次循环,处理到了第几项。

概述

把要处理的列表交给本模块,再把处理步骤拖进循环槽。每次循环会更新「项」和「计数」。

每个

对列表的每项执行处理
列表
 
要处理的列表
线程模式
⚠通常不要选择! 请阅读文档详细了解后再使用。
进度条标题
 
如果设置了此参数,则在循环过程中会显示一个进度条,标题为此参数的值。仅单线程支持。
是否成功
-- 选择变量 --
操作是否成功
-- 选择变量 --
列表中的每项,每次循环赋予当前项的值。在子步骤中应该对本输出进行处理。
计数
-- 选择变量 --
本次循环,处理到了第几项。

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

参数说明

列表:要逐项处理的列表。

线程模式:默认 单线程(顺序执行)多线程(同时执行) 请先读下面的限制,通常不要选。

线程启动间隔:仅多线程。每个线程之间的启动间隔,单位毫秒,默认 5

同时线程数:仅多线程。最多同时启动的线程数,默认 4。按电脑和任务调整。

超时毫秒数:仅多线程。所有线程开启后的等待超时。-1 表示不超时。

WaitAny模式:仅多线程。任意一个线程结束即可继续后面的步骤。

WaitAny模式下自动取消其它分支:仅多线程。启用 WaitAny 时,任一分支完成后请求取消其它未完成分支,并阻止其执行后续步骤。取消是协作式的,不保证立刻停掉正在跑的步骤。

为线程创建独立上下文:仅多线程。每个线程有自己的上下文:

  • 「项」和「计数」在各线程里都是当时那一项的值。
  • 文本、数字等值类型读写的是该线程的副本,不会写回动作变量。
  • 词典、列表等按引用传递的对象,改内容会作用到整个动作。
  • 此时只能读取变量,不能更新变量(词典、列表等引用传递的除外)。

进度条标题:仅单线程。填写后循环过程中显示进度条,标题为此值。

失败后停止:失败后是否停止动作。默认开启。

输出

每次循环都会更新这些输出,循环内部取到的是这一项的值。

  • 是否成功:操作是否成功。
  • :当前列表元素。在子步骤里处理这一项。
  • 计数:本次处理到了第几项。

限制与排障

多线程时不要同时改同一个变量,否则会冲突。同步执行时调试 log 会关掉,避免格式错乱。停止动作、跳出循环等跳转在多线程里可能失效,需要实测。其它潜在问题也请多测。

未开独立上下文时,子步骤应马上读出「项」;间隔过后循环会改写同一个变量。

示例动作

示例:每个
注释list是列表变量,设置了默认值。 使用“每个”对列表里的每一项进行操作。
每个对 {list} 的每项执行
提示消息$$序号:{count} 值:{item}
等待时间等待 1000 ms

相关链接

更新历史

  • 1.7.4 增加多线程。
  • 1.39.11 / 20230828 增加「为线程创建独立上下文」。

更新于