breakWhile
CORE · function · Runtime value
Reject as soon as one of several conditions holds.
Ordinary processing stays an ordinary if; this helper is for validation tables whose entries are evaluated in order and stop at the first failure. Behaviour that depends on earlier entries is expressed with a callback form. Reject when any predicate holds, reporting the given observer tags. Reject when any structured check holds.
Each check may carry its own reason and tags; the first match stops the evaluation. Reject when a single value is truthy.
Ordinary truthiness applies, so a function passed as a value counts as a failure; use the predicate form to evaluate it instead. Reject when a single value is truthy, reporting the given observer tags.
Import
import { breakWhile } from '@jangts/agent-core/support';import { breakWhile } from '@jangts/agent-core/support';Other public entry points:@jangts/agent-core, @jangts/agent-core/types, @jangts/agent-core/support.
Definition
Overload 1
breakWhile(occur: readonly BreakPredicate[], error?: BreakReason, tags?: readonly string[]): voidReject as soon as one of several conditions holds.
Ordinary processing stays an ordinary if; this helper is for validation tables whose entries are evaluated in order and stop at the first failure. Behaviour that depends on earlier entries is expressed with a callback form.
| Parameter | Type | Passing | Description |
|---|---|---|---|
occur | readonly BreakPredicate[] | Required | — |
error | BreakReason | undefined | Optional | — |
tags | readonly string[] | undefined | Optional | — |
Returns: void.
Overload 2
breakWhile(occur: readonly BreakPredicate[], tags: readonly string[]): voidReject when any predicate holds, reporting the given observer tags.
| Parameter | Type | Passing | Description |
|---|---|---|---|
occur | readonly BreakPredicate[] | Required | — |
tags | readonly string[] | Required | — |
Returns: void.
Overload 3
breakWhile(checks: readonly BreakCheck[], tags?: readonly string[]): voidReject when any structured check holds.
Each check may carry its own reason and tags; the first match stops the evaluation.
| Parameter | Type | Passing | Description |
|---|---|---|---|
checks | readonly BreakCheck[] | Required | — |
tags | readonly string[] | undefined | Optional | — |
Returns: void.
Overload 4
breakWhile(occur: unknown, error?: BreakReason, tags?: readonly string[]): voidReject when a single value is truthy.
Ordinary truthiness applies, so a function passed as a value counts as a failure; use the predicate form to evaluate it instead.
| Parameter | Type | Passing | Description |
|---|---|---|---|
occur | unknown | Required | — |
error | BreakReason | undefined | Optional | — |
tags | readonly string[] | undefined | Optional | — |
Returns: void.
Overload 5
breakWhile(occur: unknown, tags: readonly string[]): voidReject when a single value is truthy, reporting the given observer tags.
| Parameter | Type | Passing | Description |
|---|---|---|---|
occur | unknown | Required | — |
tags | readonly string[] | Required | — |
Returns: void.
Examples
- Rejection checks, first match, and sequential processing: Use real lists to express multiple checks and enumerated dispatch; a single ordinary condition can still use if.
One explicit rejection
Beginner · Node.js
import { Support } from '@jangts/agent-core';
const input = '你好';
Support.breakWhile(!input.trim(), '问题不能为空');
console.log(input);import { Support } from '@jangts/agent-core';
const input = '你好';
Support.breakWhile(!input.trim(), '问题不能为空');
console.log(input);Checks with dependencies evaluated in order
Configuration · Node.js
import { Support } from '@jangts/agent-core';
const input: unknown = { name: 'Ivan' };
Support.breakWhile([
{ occur: !input || typeof input !== 'object', error: '需要对象' },
{ occur: () => !('name' in (input as object)), error: '缺少 name' },
]);
console.log(input);import { Support } from '@jangts/agent-core';
const input = { name: 'Ivan' };
Support.breakWhile([
{ occur: !input || typeof input !== 'object', error: '需要对象' },
{ occur: () => !('name' in input), error: '缺少 name' },
]);
console.log(input);Declarative priority dispatch and sequential transformation
Extension · Node.js
import { Support } from '@jangts/agent-core';
const routeName = Support.matchRule([
{ id: 'status', description: '状态意图', pattern: (input: string) => input === 'status', handle: () => 'service' },
{ id: 'fallback', description: '其他意图', handle: () => 'reply' },
], 'status');
const state = { answer: ' 服务正常 ' };
Support.walkRules([
{ handle: (value: typeof state) => { value.answer = value.answer.trim(); } },
{ pattern: (value: typeof state) => !!value.answer, handle: value => { value.answer += '。'; } },
], state);
console.log(routeName, state.answer);import { Support } from '@jangts/agent-core';
const routeName = Support.matchRule([
{ id: 'status', description: '状态意图', pattern: (input) => input === 'status', handle: () => 'service' },
{ id: 'fallback', description: '其他意图', handle: () => 'reply' },
], 'status');
const state = { answer: ' 服务正常 ' };
Support.walkRules([
{ handle: (value) => { value.answer = value.answer.trim(); } },
{ pattern: (value) => !!value.answer, handle: value => { value.answer += '。'; } },
], state);
console.log(routeName, state.answer);