# General Translation Platform: awaitJobs URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/await-jobs.mdx --- title: awaitJobs description: Опрашивает поставленные в очередь задачи перевода, пока они не завершатся, не завершатся с ошибкой или не истечёт тайм-аут. Справочник API для awaitJobs. --- Опрашивает статус задач перевода и завершается, когда каждая задача переходит в конечное состояние (`completed`, `failed` или `unknown`) либо истекает тайм-аут. Это удобная обёртка над [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status), которая сама выполняет опрос. ## Обзор [#overview] Передайте результат [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) в `awaitJobs`, при необходимости указав параметры опроса. Метод возвращает итоговый статус каждой задачи. ```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( enqueueResult: EnqueueFilesResult, options?: AwaitJobsOptions ): Promise ``` *Предупреждение: `complete: true` означает, что все задачи перешли в конечное состояние — это **не** значит, что все задачи завершились успешно. Проверьте `job.status` каждой задачи, чтобы убедиться в успешном завершении.* ## Как это работает [#how-it-works] * **Автоматический опрос.** Заменяет ручные циклы опроса — вам не нужно самостоятельно вызывать `checkJobStatus` в цикле `while`. * **Конечные состояния.** Метод завершается, когда каждая задача переходит в состояние `completed`, `failed` или `unknown`. Задачи, которые API не может найти, считаются `'unknown'`. * **Тайм-аут best-effort.** Тайм-аут — это не жёсткий предел: перед завершением метод сначала заканчивает текущий опрос. * **Пустой ввод.** Если `enqueueResult` не содержит задач, метод сразу завершается с `{ complete: true, jobs: [] }`. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | ---------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------------- | ------------ | | [`enqueueResult`](#enqueue-result) | Объект результата, который возвращает `enqueueFiles`. | [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) | Нет | — | | [`options`](#options) | Конфигурация опроса. | `AwaitJobsOptions` | Да | — | ### `enqueueResult` [#enqueue-result] **Тип** [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) · **Обязательно** Результат, возвращаемый [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). Поле `jobData` указывает, какие задачи нужно опрашивать. ### `options` [#options] **Тип** `AwaitJobsOptions` · **Необязательный** Параметры опроса: | Поле | Описание | Тип | Необязательно | По умолчанию | | ------------------------ | ----------------------------------------------------------- | -------- | ------------- | -------------- | | `pollingIntervalSeconds` | Как часто выполнять опрос для получения обновлений статуса. | `number` | Да | `5` | | `timeoutSeconds` | Максимальное время ожидания до возврата текущих статусов. | `number` | Да | `600` (10 мин) | ## Возвращаемое значение [#returns] **Тип** `Promise` Возвращает `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 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'`. * Если `enqueueResult` не содержит задач, метод сразу возвращает `{ complete: true, jobs: [] }`. * Тайм-аут — это best-effort ограничение: прежде чем вернуть результат, метод завершает текущий опрос.