# generaltranslation: General Translation Core SDK: awaitJobs
URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/await-jobs.mdx
---
title: awaitJobs
description: Справка по API для метода awaitJobs, который опрашивает задания перевода и ожидает их завершения
---
## Обзор
Метод `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 min) | Максимальное время ожидания до возврата текущих статусов |
### Возвращаемое значение
`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}`);
}
}
```
***
## Примечания
* Заменяет ручные циклы опроса — вам не нужно самостоятельно вызывать `checkJobStatus` в цикле `while`
* Задания, не найденные 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), чтобы скачать готовые переводы