useAction()
function useAction<Options, RT>(promiseFn): ActionResource<Options, RT>;
Defined in: rxdb-vue/src/use-action.ts:54
把一个异步函数包成带加载状态的可调用 action。
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
Options | void | 调用参数类型;默认 void 表示无参 |
RT | unknown | 异步函数的返回类型 |
Parameters
| Parameter | Type | Description |
|---|---|---|
promiseFn | (options) => Promise<RT> | 被包装的异步函数;在 setup 期捕获一次,之后不再重新读取 |
Returns
ActionResource<Options, RT>
Example
const save = useAction(async (todo: Todo) => repository.save(todo));
// 模板里用 save.isPending 禁用按钮,用 save.execute(todo) 触发
Remarks
并发语义:内部按未完成调用计数(而非布尔标志),因此多次并发调用时
isPending 会保持为真直到最后一个完成 —— 先完成者不会提前把它置为 false。
action 本身不做去重也不取消在途调用;需要「同一时刻只跑一个」请由调用方在
isPending 为真时自行拦截。
被包装函数抛出的错误原样向上冒泡,计数在 finally 中恢复。
不依赖组件实例,可以在 setup 之外调用;返回的 isPending 是普通 computed,
生命周期跟随持有它的作用域,没有需要清理的订阅。
三端等价实现:Angular useAction(Signal<boolean>)、React useAction(快照 boolean)。