apicore
invoke
查看 Markdown使用协议命令名直接调用宿主,并执行已注册命令的本地参数校验。
使用协议命令名直接调用宿主,并执行已注册命令的本地参数校验。
KSM.invoke<TResult, TArgs>(
cmd: string,
args: TArgs
): Promise<TResult>| Windows | Android | 权限 |
|---|---|---|
| 支持 | 支持 | 由目标命令决定 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
cmd | string | 是 | protocol/commands.json 中的协议命令名 |
args | TArgs | 是 | 目标命令参数对象 |
命令名不带 KSM 前缀,例如 fs.readText,不是 KSM.fs.readText。
Promise<TResult>。TResult 由调用方指定,运行时不额外校验宿主返回结构。
cmd 是已注册命令,发送前会运行生成的参数校验器。Error,其 name 为 INVALID_ARGS。UNKNOWN_COMMAND。type Pong = { pong: true };
const result = await KSM.invoke<Pong, Record<string, never>>(
'ping',
{}
);
console.assert(result.pong === true);优先使用类型更明确的领域 API:
await KSM.fs.readText({ path: 'app://data/config.json' });| 错误 | 场景 |
|---|---|
INVALID_ARGS | 已注册命令的参数不符合契约 |
UNKNOWN_COMMAND | 宿主未注册该命令 |
TIMEOUT | 请求超过默认 10 秒 |
普通 Error | 桥接未初始化、传输失败或桥接已销毁 |
评论