# 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) 下载已完成的翻译