Skip to content

BatchPrintManager API

批量打印管理器,支持大批量打印任务的分片、并发控制和进度追踪。

导入

typescript
import { BatchPrintManager } from 'taro-bluetooth-print';

创建实例

typescript
const batchManager = new BatchPrintManager({
  chunkSize: 10,         // 每批数量
  concurrency: 3,        // 并发数
  delayBetweenChunks: 500 // 批次间隔 ms
});

方法

批量任务

createBatch(items: BatchItem[]): string

创建批量任务,返回批次 ID。

typescript
const batchId = batchManager.createBatch([
  { id: 'item-1', data: printData1 },
  { id: 'item-2', data: printData2 },
  { id: 'item-3', data: printData3 }
]);

startBatch(batchId: string): Promise<BatchResult>

开始执行批量任务。

typescript
const result = await batchManager.startBatch(batchId);
console.log(`成功: ${result.success}, 失败: ${result.failed}`);

pauseBatch(batchId: string): void

暂停批量任务。

typescript
batchManager.pauseBatch(batchId);

resumeBatch(batchId: string): void

恢复批量任务。

typescript
batchManager.resumeBatch(batchId);

cancelBatch(batchId: string): void

取消批量任务。

typescript
batchManager.cancelBatch(batchId);

进度查询

getProgress(batchId: string): BatchProgress

获取批量任务进度。

typescript
const progress = batchManager.getProgress(batchId);
console.log(`进度: ${progress.completed}/${progress.total}`);
console.log(`百分比: ${progress.percentage}%`);

getFailedItems(batchId: string): FailedItem[]

获取失败项目列表。

typescript
const failed = batchManager.getFailedItems(batchId);
failed.forEach(item => {
  console.log(`${item.id}: ${item.error}`);
});

retryFailed(batchId: string): Promise<void>

重试所有失败项目。

typescript
await batchManager.retryFailed(batchId);

事件

typescript
batchManager.on('progress', (batchId, progress) => {
  console.log(`批次 ${batchId}: ${progress.percentage}%`);
});

batchManager.on('item-complete', (batchId, itemId) => {
  console.log(`项目完成: ${itemId}`);
});

batchManager.on('item-failed', (batchId, itemId, error) => {
  console.error(`项目失败: ${itemId}`, error);
});

batchManager.on('batch-complete', (batchId, result) => {
  console.log(`批次完成: 成功 ${result.success}, 失败 ${result.failed}`);
});

类型定义

BatchItem

typescript
interface BatchItem {
  id: string;
  data: Uint8Array;
  deviceId?: string;
  priority?: 'high' | 'normal' | 'low';
}

BatchProgress

typescript
interface BatchProgress {
  total: number;
  completed: number;
  failed: number;
  pending: number;
  percentage: number;
}

基于 MIT 许可发布