# 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), чтобы скачать готовые переводы