本页目录
取消请求
概述
cancel(connectId) 取消该连接关联的排队中和执行中请求,并关闭待处理的 SDK UI。省略 connectId 会取消所有待处理请求。可在用户取消 PIN/passphrase 输入、退出流程或达到应用超时时调用。
方法
HardwareSDK.cancel(connectId);
// Cancel all pending requests:
HardwareSDK.cancel();参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
connectId | string | 否 | 目标连接;省略时取消所有待处理请求。 |
返回值
cancel() 返回 void。需要等待原方法的 Promise 才能观察结果。公共 SDK 通常将被取消的请求解析为 success: false;队列取消使用 HardwareErrorCode.CallQueueActionCancelled(822)。设备端拒绝,或与取消同时发生且先完成的错误,可能返回其他错误码。不要匹配错误文案,也不要假设所有取消都返回相同错误码。
示例
基本取消
import type { EVMSignTransactionParams } from '@onekeyfe/hd-core';
import { HardwareErrorCode } from '@onekeyfe/hd-shared';
// Use a fully prepared transaction from your application's transaction builder.
declare const params: EVMSignTransactionParams;
const signPromise = HardwareSDK.evmSignTransaction(connectId, deviceId, params);
// Invoke from the user's Cancel action.
HardwareSDK.cancel(connectId);
const result = await signPromise;
if (!result.success) {
if (result.payload.code === HardwareErrorCode.CallQueueActionCancelled) {
// Close the cancelled operation's UI.
} else {
throw new Error(result.payload.error);
}
}超时取消
此计时器会取消指定连接的所有待处理请求,因此同一设备的操作应串行执行。
import type { EVMSignTransactionParams } from '@onekeyfe/hd-core';
async function signWithTimeout(
connectId: string,
deviceId: string,
params: EVMSignTransactionParams,
timeoutMs = 60_000,
) {
const timer = setTimeout(() => HardwareSDK.cancel(connectId), timeoutMs);
try {
return await HardwareSDK.evmSignTransaction(connectId, deviceId, params);
} finally {
clearTimeout(timer);
}
}取消与释放传输
取消会中断操作,并可能触发设备或连接清理,不保证连接保持可用或立即接受新调用。先等待原请求结果;如果连接已断开,重新发现设备并刷新 getDeviceState,再处理新的用户操作。不要自动重放签名或固件升级。
拆除 SDK 或切换传输时使用 HardwareSDK.dispose(),后续使用前重新 init()。物理断开通过 DEVICE.DISCONNECT 通知,待处理的公共方法调用返回失败结果。
最后更新于