Skip to Content
HardwareAPI básicaCancelar una solicitud

Cancelar una solicitud

Descripción general

cancel(connectId) cancela las solicitudes del SDK en cola y activas asociadas a esa conexión y cierra la interfaz pendiente del SDK. Si se omite connectId, cancela todas las solicitudes pendientes. Úsalo cuando el usuario cancele una solicitud de PIN o passphrase, abandone el flujo o se alcance el tiempo de espera de la aplicación.

Método

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

Parámetros

ParámetroTipoObligatorioDescripción
connectIdstringNoConexión de destino; omítela para cancelar todas las solicitudes pendientes.

Valor devuelto

cancel() devuelve void. Espera la Promise del método original para observar el resultado. El SDK público normalmente resuelve una solicitud cancelada con success: false; la cancelación de la cola usa HardwareErrorCode.CallQueueActionCancelled (822). Un rechazo del dispositivo o un error que se adelante a la cancelación puede devolver otro código. No compares el texto del mensaje de error ni supongas que toda cancelación tiene el mismo código.

Ejemplos

Cancelación básica

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); } }

Cancelar por tiempo de espera

Este temporizador cancela todas las solicitudes pendientes en la conexión seleccionada, por lo que debes ejecutar las operaciones de cada dispositivo de forma secuencial.

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); } }

Cancelación frente a cierre del transporte

La cancelación interrumpe la operación y puede activar la limpieza del dispositivo o del enlace. No garantiza que la conexión siga siendo utilizable ni que se pueda iniciar otra llamada de inmediato. Espera al resultado original; si se perdió el enlace, vuelve a detectar el dispositivo y actualiza getDeviceState antes de otra acción del usuario. No repitas automáticamente firmas ni actualizaciones de firmware.

Usa HardwareSDK.dispose() al cerrar el SDK o cambiar de transporte, y después init() antes de volver a usarlo. Una desconexión física se comunica mediante DEVICE.DISCONNECT; las llamadas pendientes a métodos públicos devuelven resultados de error.

Consulta Desconexiones y reconexión y Códigos de error.

Última actualización el