# generaltranslation: General Translation Core SDK: awaitJobs URL: https://generaltranslation.com/zh/docs/core/class/methods/translation/await-jobs.mdx --- title: awaitJobs description: awaitJobs 方法的 API 参考,用于轮询并等待翻译任务完成 --- ## 概述 `awaitJobs` 方法会轮询翻译任务的状态,并在所有任务都进入终态 (`completed`、`failed` 或 `unknown`) 或达到超时时间时返回。这是对 [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status) 的便捷封装,可自动处理轮询。 ```typescript const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' }); const enqueueResult = await gt.enqueueFiles(uploadedFiles, { sourceLocale: 'en', targetLocales: ['es', 'fr'], }); const result = await gt.awaitJobs(enqueueResult); if (result.complete) { console.log('所有任务已完成'); } else { console.log('已超时 — 部分任务仍在进行中'); } ``` `complete: true` 表示所有任务都已进入终态——这**并不**表示所有任务都已成功。请检查每个 `job.status` 的值,以确认是否成功。 ## 参考文档 ### 参数 | 名称 | 类型 | 描述 | | --------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `enqueueResult` | [`EnqueueFilesResult`](/docs/core/types/enqueue-files-options) | [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) 返回的结果对象 | | `options?` | `AwaitJobsOptions` | 可选的轮询配置 | #### AwaitJobsOptions | 名称 | 类型 | 默认值 | 描述 | | ------------------------- | -------- | -------------- | -------------- | | `pollingIntervalSeconds?` | `number` | `5` | 轮询检查状态更新的频率 | | `timeoutSeconds?` | `number` | `600` (10 分钟) | 返回当前状态前的最长等待时间 | ### 返回值 `Promise` ```typescript type AwaitJobsResult = { /** 所有任务是否均已达到终止状态(不一定是成功)。 */ complete: boolean; jobs: JobResult[]; }; type JobResult = { jobId: string; status: JobStatus; error?: { message: string }; }; ``` | 属性 | 类型 | 描述 | | --------------- | ------------------------------------------------------------------------------ | -------------------------------------------- | | `complete` | `boolean` | 如果没有任何任务仍在进行中,则为 `true`;如果已达到超时时间,则为 `false` | | `jobs` | `JobResult[]` | 每个任务的最终状态 | | `jobs[].jobId` | `string` | 任务标识符 | | `jobs[].status` | [`JobStatus`](/docs/core/class/methods/translation/check-job-status#jobstatus) | 终态:`'completed'`、`'failed'` 或 `'unknown'` | | `jobs[].error?` | `{ message: string }` | 任务失败时的错误详情 | *** ## 示例 ### 加入队列并等待翻译完成 ```typescript title="index.ts" copy import { GT } from 'generaltranslation'; const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key', }); // 上传并加入队列 const { uploadedFiles } = await gt.uploadSourceFiles(files, { sourceLocale: 'en', }); const enqueueResult = await gt.enqueueFiles(uploadedFiles, { sourceLocale: 'en', targetLocales: ['es', 'fr', 'de'], }); // 等待所有任务完成(每 10 秒轮询一次,5 分钟后超时) const result = await gt.awaitJobs(enqueueResult, { pollingIntervalSeconds: 10, timeoutSeconds: 300, }); if (!result.complete) { console.warn('部分任务未能在规定时间内完成'); } // 检查各任务结果 for (const job of result.jobs) { if (job.status === 'completed') { console.log(`任务 ${job.jobId} 已成功`); } else if (job.status === 'failed') { console.error(`任务 ${job.jobId} 失败:${job.error?.message}`); } } ``` *** ## 注意事项 * 可替代手动轮询循环——无需你自己在 `while` 循环中调用 `checkJobStatus` * API 未找到的任务会被视为 `'unknown'` 状态 * 如果 `enqueueResult` 中不包含任何任务,该方法会立即返回 `{ complete: true, jobs: [] }` * 超时是一个尽力而为的限制——该方法会先完成当前这次轮询,再返回 ## 后续步骤 * 参见 [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) 开始翻译任务 * 参见 [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status) 手动轮询状态 * 参见 [`downloadFile`](/docs/core/class/methods/translation/download-file) 下载已完成的翻译