Asynchronous Action 即一个需要很长时间才能完成的动作,在完成标准未满足时会返回 RUNNING。
异步动作有以下要求:
- 该方法
tick()
不应阻塞太久,执行流程应尽快返回。 - 如果调用
halt()
方法,应尽快中止。
StatefulActionNode 是实现异步动作的首选方式。当你的代码包含请求-回复模式时,它特别有用,即动作向另一个进程发送异步请求,并定期检查回复是否已收到。根据那则回复,它可能会返回 SUCCESS 或 FAILURE。
StatefulActionNode
的派生类必须重写以下虚拟方法,而不是 tick()
:
NodeStatus onStart()
:当节点处于 IDLE 状态时被调用。它可能会立即成功或失败,或者返回 RUNNING。在后一种情况下,下次收到 tick 时,方法onRunning
将被执行。NodeStatus onRunning()
: 当节点处于 RUNNING 状态时调用。返回新状态。void onHalted()
: 当此节点被树中的另一个节点中止时调用。