# General Translation Platform: awaitJobs
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/await-jobs.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Опрашивает поставленные в очередь задачи перевода, пока они не завершатся, не завершатся с ошибкой или не истечёт тайм-аут. Справочник API для awaitJobs.

Опрашивает статус задач перевода и завершается, когда каждая задача переходит в конечное состояние (`completed`, `failed` или `unknown`) либо истекает тайм-аут. Это удобная обёртка над [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status), которая сама выполняет опрос.

## Обзор [#overview]

Передайте в `awaitJobs` результат [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) или массив идентификаторов задач, при необходимости указав параметры опроса. Метод возвращает итоговый статус каждой задачи.

```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('Превышено время ожидания — некоторые задачи ещё выполняются');
}
```

Сигнатура:

```typescript
awaitJobs(
  jobs: EnqueueFilesResult | string[],
  options?: AwaitJobsOptions
): Promise<AwaitJobsResult>
```

*Предупреждение: `complete: true` означает, что все задачи перешли в конечное состояние — это **не** значит, что все задачи завершились успешно. Проверьте `job.status` каждой задачи, чтобы убедиться в успешном завершении.*

## Как это работает [#how-it-works]

* **Автоматический опрос.** Заменяет ручные циклы опроса — вам не нужно самостоятельно вызывать [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status) в цикле `while`.
* **Конечные состояния.** Метод завершается, когда каждая задача переходит в состояние `completed`, `failed` или `unknown`. Задачи, которые API не может найти, считаются `'unknown'`.
* **Тайм-аут best-effort.** Тайм-аут — это не жёсткий предел: перед завершением метод сначала заканчивает текущий опрос.
* **Пустой ввод.** Если результат постановки в очередь не содержит задач или массив идентификаторов задач пуст, метод сразу завершается с `{ complete: true, jobs: [] }`.

## Параметры [#parameters]

| Параметр              | Описание                                                                                                                                              | Тип                                                                                                           | Необязательный | По умолчанию |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------- | ------------ |
| [`jobs`](#jobs)       | Результат, возвращаемый [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files), или массив идентификаторов задач. | [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) | `string[]` | Нет            | —            |
| [`options`](#options) | Конфигурация опроса.                                                                                                                                  | `AwaitJobsOptions`                                                                                            | Да             | —            |

### `jobs`

**Тип** [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) | `string[]` · **Обязательно**

Результат, возвращаемый [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files), или идентификаторы задач, возвращаемые другим рабочим процессом, например [`setupProject`](/docs/platform/core/reference/gt-class-methods/translation/setup-project). При передаче результата постановки в очередь его поле `jobData` указывает, какие задачи нужно опрашивать.

### `options`

**Тип** `AwaitJobsOptions` · **Необязательный**

Конфигурация опроса:

| Поле                     | Описание                                                    | Тип      | Необязательно | По умолчанию   |
| ------------------------ | ----------------------------------------------------------- | -------- | ------------- | -------------- |
| `pollingIntervalSeconds` | Как часто выполнять опрос для получения обновлений статуса. | `number` | Да            | `5`            |
| `timeoutSeconds`         | Максимальное время ожидания до возврата текущих статусов.   | `number` | Да            | `600` (10 мин) |

## Возвращаемое значение [#returns]

**Тип** `Promise<AwaitJobsResult>`

Возвращает `AwaitJobsResult` с общим флагом и итоговым статусом каждой задачи:

```typescript
type AwaitJobsResult = {
  /** Достигли ли все задачи конечного состояния (не обязательно успешного). */
  complete: boolean;
  jobs: JobResult[];
};

type JobResult = {
  jobId: string;
  status: JobStatus;
  error?: { message: string };
};
```

| Свойство        | Описание                                                                             | Тип                                                                                                  |
| --------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| `complete`      | `true`, если ни одна задача больше не выполняется; `false`, если достигнут тайм-аут. | `boolean`                                                                                            |
| `jobs`          | Итоговый статус каждой задачи.                                                       | `JobResult[]`                                                                                        |
| `jobs[].jobId`  | Идентификатор задачи.                                                                | `string`                                                                                             |
| `jobs[].status` | Конечный статус: `'completed'`, `'failed'` или `'unknown'`.                          | [`JobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status#jobstatus) |
| `jobs[].error`  | Подробности ошибки, если задача завершилась с ошибкой.                               | `{ message: string }`                                                                                |

## Примеры [#examples]

Опрашивайте идентификаторы задач напрямую:

```typescript
const result = await gt.awaitJobs(['job-123', 'job-456']);
```

Получайте результат [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) путём опроса:

```typescript title="index.ts"
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('Some jobs did not finish in time');
}

// Проверить результаты каждой задачи
for (const job of result.jobs) {
  if (job.status === 'completed') {
    console.log(`Job ${job.jobId} succeeded`);
  } else if (job.status === 'failed') {
    console.error(`Job ${job.jobId} failed: ${job.error?.message}`);
  }
}
```

## Примечания [#notes]

* Задачи, которые API не находит, считаются имеющими статус `'unknown'`.
* Пустой результат постановки в очередь или массив идентификаторов задач сразу возвращает `{ complete: true, jobs: [] }`.
* Тайм-аут — это best-effort ограничение: прежде чем вернуть результат, метод завершает текущий опрос.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
