このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
現在のイベントフローと、同じイベントディスパッチ内でトリガーされた後続のすべてのイベントフローを終了します。グローバルエラーや権限チェックにより、現在のイベント配下のすべてのイベントフローを即座に中止する必要がある場合によく使用されます。
ctx.exitAll() は通常、以下の JS 実行コンテキストにおいて、現在のイベントフローと、そのイベントによってトリガーされる後続のイベントフローを同時に中止する必要がある場合に使用されます。
| シーン | 説明 |
|---|---|
| イベントフロー | メインイベントフローのバリデーションに失敗した場合(権限不足など)、メインフローおよび同じイベント配下でまだ実行されていない後続のフローを中止する必要があります。 |
| 連動ルール | 連動バリデーションが通らない場合、現在の連動および同じイベントでトリガーされる後続の連動を終了する必要があります。 |
| 操作イベント | 操作前のバリデーションに失敗した場合(削除前の権限チェックなど)、メインの操作および後続のステップを阻止する必要があります。 |
ctx.exit()との違い:ctx.exit()は現在のイベントフローのみを終了します。ctx.exitAll()は、現在のイベントディスパッチにおいてまだ実行されていない後続のイベントフローも終了します。
ctx.exitAll() を呼び出すと、内部的に FlowExitAllException がスローされます。これはイベントフローエンジンによってキャッチされ、現在のイベントフローインスタンスと同じイベント配下の後続イベントフローを停止します。呼び出されると、現在の JS コード内の残りのステートメントは実行されません。
| メソッド | 影響範囲 |
|---|---|
ctx.exit() | 現在のイベントフローのみを終了し、後続のイベントフローには影響しません。 |
ctx.exitAll() | 現在のイベントフローを終了し、同じイベント配下で**順次実行(sequential)**される後続のイベントフローも中止します。 |
ctx.exitAll() が呼び出されると、後続のイベントフローは実行されません。ctx.exitAll() を呼び出しても、他の並行実行中のイベントフローは中断されません(それぞれが独立しているため)。ctx.exitAll() を呼び出した後、現在の JS 内の後続コードは実行されません。呼び出す前に ctx.message、ctx.notification、またはモーダルなどを使用して、ユーザーに理由を説明することをお勧めします。FlowExitAllException をキャッチする必要は通常ありません。イベントフローエンジンに処理を任せてください。ctx.exit() を使用してください。ctx.exitAll() は現在のイベントフローのみを終了し、他の並行実行中のイベントフローを中断することはありません。