跳转到内容

循环

一共四个节点。它们都在一个专门的输出上发出循环体,并通过自己的 done 端口告知工作已经结束。

在一个列表上迭代。

输入items(json)
输出each —— 每个元素发出一次
配置parallelism{ enabled, count }

不启用并行时,各次迭代依次串行执行。启用后,最多有 count 次迭代同时进行(最小值为 2)。

done 端口只会在所有迭代子图都结束之后发出一次:汇总或清理工作就接在这里。

HTTP 请求 ──response[body.ids]──► ForEach(并行度 4)
├─ each ──► HTTP 请求“详情”
└─ done ──► Log“已完成”

数值型循环。

输入fromtostep(数值)
输出each —— 显示名为 index
配置fromtooperator(默认 <,也可以是 =>)、step(0 会按 1 处理)、parallelism

先判断条件再执行的循环。

输入leftright
输出then —— 显示名为循环体纯信号
配置operatorleftright

循环体是一个信号:它不携带任何值。请把循环体的末端接回 While 节点的 in 端口, 以便重新求值条件。

可以用一个运行变量作为计数器或停止条件。

与上一个相同,但循环体至少执行一次:判断发生在之后。输出的显示名是循环

情形节点
我手上有一个列表ForEach
我知道迭代的次数For
停止条件取决于某个结果,且要先判断While
同上,但至少要跑一轮Do…While
我想在失败时重试Retry

ForEachFor 的并行会真的并发发出网络调用。在预发布环境上请逐步调高它 —— 并且别忘了用等待节点来平滑节奏。