ctx.exitAll()
终止当前事件流及其在同一次事件调度中触发的所有后续事件流。常用于因全局错误或权限校验需要立即中止当前事件下的所有事件流。
适用场景
ctx.exitAll() 一般用于以下可执行 JS 的上下文中,且需同时中止当前事件流及由该事件触发的后续事件流时:
与
ctx.exit()的区别:ctx.exit()仅终止当前事件流;ctx.exitAll()会终止当前事件调度中尚未执行的后续事件流。
类型定义
调用 ctx.exitAll() 会抛出内部的 FlowExitAllException,由事件流引擎捕获并停止当前事件流实例及同事件下的后续事件流。一旦 调用,当前 JS 代码中剩余的语句不会执行。
与 ctx.exit() 的对比
执行模式说明
- 顺序执行(sequential):同事件下事件流按顺序执行;任一事件流调用
ctx.exitAll()后,后续事件流将不再执行 - 并行执行(parallel):同事件下事件流并行执行;某个事件流调用
ctx.exitAll()不会中断其他已并发的事件流(各自独立)
示例
权限校验失败时终止所有事件流
全局前置校验不通过时终止
与 ctx.exit() 的选用
先提示再终止
注意事项
- 调用
ctx.exitAll()后,当前 JS 中后续代码不会执行;建议在调用前通过ctx.message、ctx.notification或弹窗向用户说明原因 - 业务代码中通常无需捕获
FlowExitAllException,交给事件流引擎处理即可 - 若只需停止当前事件流而不影响后续事件流,使用
ctx.exit() - 并行模式下,
ctx.exitAll()仅终止当前事件流,不会打断其他已并发的事件流
相关
- ctx.exit():仅终止当前事件流
- ctx.message:提示消息
- ctx.modal:确认弹窗

