Skip to Content
硬件接入基础 API取消请求
本页目录

取消请求

概述

cancel(connectId) 取消该连接关联的排队中和执行中请求,并关闭待处理的 SDK UI。省略 connectId 会取消所有待处理请求。可在用户取消 PIN/passphrase 输入、退出流程或达到应用超时时调用。

方法

HardwareSDK.cancel(connectId); // Cancel all pending requests: HardwareSDK.cancel();

参数

参数类型必填说明
connectIdstring否目标连接;省略时取消所有待处理请求。

返回值

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 通知,待处理的公共方法调用返回失败结果。

参见断线与重连和错误码。

最后更新于