跳转到内容

@ActionState

动作态装饰器。异步执行期间临时进入指定状态,结束后回到原状态。

签名

function ActionState(name?: string): MethodDecorator

参数

参数说明
name临时状态名。省略时默认使用方法名

行为

class Doc extends FSM {
@ActionState('saving')
async save() {
await persist()
}
}

执行 save()

  1. 记录 old = this.state
  2. setState('saving')(注意:是直接切到 'saving',不是 MiddleState
  3. 执行原方法
    • 成功:setState(old),返回结果
    • 失败:setState(old, err),抛出原错误

与 @ChangeState 的区别

@ChangeState@ActionState
执行前校验校验 from不校验
执行后状态进入新的稳定状态 to回到原状态
中间态MiddleState${action}ing直接进入 name
状态图出现在 stateDiagram不出现
失败回滚回到 from回到原状态

同步方法支持

原方法若返回同步值,行为一致(同步返回,状态切回):

@ActionState('refreshing')
refresh() {
return this.cache
}

示例

dataFetch 示例用 @ActionState('retrying') 体现重试等待的中间态。

参见