跳到主要内容

Wait(等待)

让流程暂停固定的一段时间。

用途

把流程保持若干毫秒——好让动画结束、屏幕稳定,或网络调用返回,再进行下一步。

它是纯计时器。它不看屏幕。

何时用

  • 在读屏之前让动画或转场完成。
  • SwipeZoom 后稳定显示。
  • 刻意为流程调速,使它不以机器速度动作。

何时不用

  • 等某物出现。 带超时的 Find ImageCheck Region 做得更好:它在东西一出现的瞬间返回,而不是总把整段延时烧掉。
  • 修飘忽。 "通常能行"的 Wait 是套着多余步骤的竞态条件。
经验法则

有条件就等条件。只有当没有可观察的东西标记你所等之物的终点时,才等时间

前提

无。Wait 不接设备也能运行。

如何运行

  1. 校验时长有效(50–120000 ms)。
  2. 随机模式:为本次执行取一个 min 与 max 之间的均匀整数延时。
  3. 分成可取消的小片睡眠,好让 Stop 迅速生效。
  4. 若等待中运行被取消,路由 Cancelled;否则路由 Success 并报告真实等待时间。

分片睡眠正是 60 秒 Wait 不会阻塞你停止运行的原因。

设置

设置类型范围默认作用
Wait mode选择fixedrandomfixed一个固定延时,或每次执行取新随机延时
Durationinteger50–120000 ms必填。 固定值,也是随机对不全时的回退
Duration mininteger50–120000 ms随机模式下限
Duration maxinteger50–120000 ms随机模式上限
Reasonstring≤ 500 字符显示在运行日志里、解释这个停顿为何存在的备注

随机模式

waitMode: random,运行时每次执行取一个 [min, max] 里的新均匀整数延时。循环里的 Wait 因此每轮暂停不同。

这有两重意义:它挡住流程发出完美规整的时间签名,还在多个实例跑同一流程时自然分散负载。

Duration 仍必填——它是固定值,也是随机对不全时的回退。

请用 Reason 字段

Reason 零成本,且显示在运行日志里。"居中后让地图稳定" 半年后告诉你那 900 ms 为何存在。没注释的魔法数字是流程腐烂的方式。

端口

端口走它的时机必接
Success整段等待流逝(输出:真实等待毫秒)
Cancelled等待中运行被停否——永不被走
Fatal时长在 50–120000 ms 之外否——永不被走

Wait 没有 Failure 和 Timeout 端口。等待不会失败;它只能被取消或配置错。

基础示例

让打开动画结束:

  • Duration:1000 ms
  • Reason:"opening animation"

实际示例——手势后稳定

随机稳定吸收快机与慢机的差异,随后的检测确认结果而非假设。

高级示例——为循环调速

在多次重复一个动作的循环里,固定延时使每轮一模一样。随机的不会:

  • Wait mode:random
  • Duration min:1000,max:1500
  • Reason:"trips 之间拟人调速"

最佳实践

  • 凡有条件之处都用检测替换 Wait。 这是多数流程里现成的最大提速。
  • 随机化重复的等待。 循环里的固定延时既比需要慢又比需要更规整。
  • 总填 Reason。
  • 优先一个刻意的 Wait 而非多个散落的。 见到三个相连的 Wait,说明流程在猜。
  • 永不用 Wait 来"让重试生效"。 在节点的重试策略上配退避。

性能笔记

  • Wait 每次都精确耗它的时长。这是与检测节点的关键差别——后者在条件一满足就返回,只在最坏情况才烧满超时。
  • 把 2000 ms 的 Wait 换成 2000 ms 超时的 Find Image 通常实际只耗 200–400 ms,因为图像通常很快就在。
  • Wait 在循环里成倍放大。200 轮循环里的 1500 ms 就是五分钟无所事事。

内存笔记

  • Wait 不分配、不持有帧。占用为零。
  • 因分片可取消睡眠,长 Wait 不持有任何打开的资源。

常见错误

错误后果修复
到处固定 Wait慢却仍飘——设备各异在检测结果上等待
对动画太短下一节点读到转场中途的帧调高,或用检测验证
用 Wait 代替重试退避重试有自己的退避在节点上配 backoffMs
Duration 低于 50 msFatal——超范围下限 50 ms
指望 Failure 端口没有Wait 不会失败

故障排查

流程慢但节点个个正常。 把 Wait 加起来。固定延时是流程本可几秒却耗几分钟的常见元凶。

等待像被忽略了。 查节点是否在被执行的路径上——没接线的分支从不运行。

节点走 Fatal。 时长在 50–120000 ms 之外。随机模式查两个界限。

长等待时停止运行慢一拍。 预期——睡眠分片,取消落在下一片边界而非瞬时。

FAQ

最长等多久? 120000 ms——约两分钟。更长的停顿用 Scheduler

随机等待每轮重掷吗? 是,每次执行一次。

时长能取自变量吗? durationMs 接受整串 {{变量}} 引用。两个随机界限是纯整数。

Wait 计入运行时长护栏吗? 计入。所有墙钟时间都计入 maxRuntimeDurationMs

相关节点

相关页面