通知¶
在初始化或运行引擎时,某些操作可能需要相当长的时间才能完成。您可以使用回调函数接收这些操作的进度通知。
目前,进度通知仅支持模型下载。创建引擎时,它将下载缓存中不存在的任何模型。
以下是使用图像到文本模型的回调函数示例
const { createEngine } = ChromeUtils.importESModule("chrome://global/content/ml/EngineProcess.sys.mjs");
// options needed for the task
const options = {taskName: "moz-image-to-text" };
// We create the engine object, using options and a callback
const engine = await createEngine(options, progressData => {
console.log("Received progress data", progressData);
});
在上面的代码中,**progressData** 是 ProgressAndStatusCallbackParams 类型的一个对象,包含以下字段
**progress**: 表示已加载数据百分比的浮点数。请注意,100% 不一定表示操作已完成。
**totalLoaded**: 表示迄今为止已加载的数据总量的浮点数。
**currentLoaded**: 当前回调调用中加载的数据量。
**total**: 表示要加载的数据总量估算值的浮点数。
**units**: 报告数量的单位。
**type**: 正在跟踪的操作的名称。它将是 ProgressType.DOWNLOAD、ProgressType.LOAD_FROM_CACHE 之一。
**statusText**: 表示正在跟踪的操作状态的消息,可以是
ProgressStatusText.INITIATE 表示操作已开始。这将对由 id 和 type 唯一标识的每个操作使用一次。
ProgressStatusText.SIZE_ESTIMATE 表示操作大小的估算值。这将对由 id 和 type 唯一标识的每个操作使用一次,更新 total` 字段。
ProgressStatusText.IN_PROGRESS 表示操作正在进行中。这将在每次发生进度时使用,更新 totalLoaded` 和 currentLoaded` 字段。
ProgressStatusText.DONE 表示操作已完成。
**id**: 唯一标识正在跟踪的对象/文件的 ID。
**ok**: 表示操作是否成功的布尔值。
**metadata**: 正在跟踪的操作的任何其他元数据。