factus-js iconfactus-js

Control de solicitudes (AbortSignal)

Cancela solicitudes HTTP en curso usando AbortSignal en cualquier método del SDK.

Todos los métodos del SDK aceptan un parámetro opcional options de tipo RequestOptions. Actualmente soporta la propiedad signal para pasar un AbortSignal y cancelar la solicitud.

Firma de RequestOptions

interface RequestOptions {
  signal?: AbortSignal;
}

Cancelar una solicitud

const controller = new AbortController();

// Cancelar después de 3 segundos
setTimeout(() => controller.abort(), 3000);

try {
  const response = await factus.bills.list(
    { filter: { status: "1" } },
    { signal: controller.signal },
  );
  console.log(response.data.data);
} catch (error) {
  if (error.name === "AbortError") {
    console.log("Solicitud cancelada");
  }
}

Timeout con AbortSignal.timeout

Los entornos modernos de Node.js (≥ 18) y navegadores soportan AbortSignal.timeout() directamente:

// Cancela automáticamente si la respuesta tarda más de 5 s
const response = await factus.bills.get("SETP990000001", {
  signal: AbortSignal.timeout(5000),
});

AbortSignal.timeout() está disponible en Node.js 18+ y en navegadores modernos. Para entornos más antiguos usa AbortController con setTimeout como en el ejemplo anterior.

Usar con listAll()

Puedes pasar el signal al iterador listAll() para cancelar la paginación en cualquier página intermedia:

const controller = new AbortController();
setTimeout(() => controller.abort(), 10000);

for await (const bill of factus.bills.listAll({}, { signal: controller.signal })) {
  process(bill);
}

El iterador se detendrá y lanzará AbortError en cuanto la señal sea abortada.

Compatibilidad

El soporte de AbortSignal está disponible en todos los métodos de los módulos: bills, creditNotes, supportDocuments, adjustmentNotes, reception, numberingRanges, company, subscription y catalog.

En esta página