# General Translation Platform: awaitJobs URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/translation/await-jobs.mdx --- title: awaitJobs description: Sondea los trabajos de traducción en cola hasta que se completen, fallen o se agote el tiempo de espera. Referencia de la API para awaitJobs. --- Sondea el estado de los trabajos de traducción y se resuelve cuando cada trabajo alcanza un estado terminal (`completed`, `failed` o `unknown`) o cuando se agota el tiempo de espera. Es un contenedor práctico sobre [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status) que se encarga del sondeo por ti. ## Descripción general [#overview] Pasa el resultado de [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) a `awaitJobs`, opcionalmente con opciones de sondeo. Se resuelve con el estado final de cada trabajo. ```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('All jobs finished'); } else { console.log('Timed out — some jobs still in progress'); } ``` Firma: ```typescript awaitJobs( enqueueResult: EnqueueFilesResult, options?: AwaitJobsOptions ): Promise ``` *Advertencia: `complete: true` significa que todos los trabajos alcanzaron un estado terminal; **no** significa que todos los trabajos se hayan completado con éxito. Verifica el `job.status` de cada trabajo para confirmar si tuvo éxito.* ## Cómo funciona [#how-it-works] * **Sondeo automático.** Sustituye los bucles de sondeo manual: no necesitas llamar a `checkJobStatus` dentro de un bucle `while`. * **Estados finales.** Se resuelve cuando cada trabajo está en `completed`, `failed` o `unknown`. Los trabajos que la API no puede encontrar se tratan como `'unknown'`. * **Tiempo de espera de best effort.** El tiempo de espera es un límite de best effort: el método termina el sondeo en curso antes de resolverse. * **Entrada vacía.** Si `enqueueResult` no contiene ningún trabajo, el método se resuelve de inmediato con `{ complete: true, jobs: [] }`. ## Parámetros [#parameters] | Parámetro | Descripción | Tipo | Opcional | Por defecto | | ---------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------- | ----------- | | [`enqueueResult`](#enqueue-result) | El objeto de resultado que devuelve `enqueueFiles`. | [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) | No | — | | [`options`](#options) | Configuración del sondeo. | `AwaitJobsOptions` | Sí | — | ### `enqueueResult` [#enqueue-result] **Tipo** [`EnqueueFilesResult`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) · **Requerido** El resultado devuelto por [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). Su `jobData` identifica los trabajos cuyo estado debe consultarse. ### `options` [#options] **Tipo** `AwaitJobsOptions` · **Opcional** Configuración de sondeo: | Campo | Descripción | Tipo | Opcional | Predeterminado | | ------------------------ | ------------------------------------------------------------------------- | -------- | -------- | -------------- | | `pollingIntervalSeconds` | Frecuencia con la que se consulta para obtener actualizaciones de estado. | `number` | Sí | `5` | | `timeoutSeconds` | Tiempo máximo de espera antes de devolver los estados actuales. | `number` | Sí | `600` (10 min) | ## Devuelve [#returns] **Tipo** `Promise` Se resuelve con un `AwaitJobsResult` que incluye un indicador general y el estado final de cada trabajo: ```typescript type AwaitJobsResult = { /** Si todos los trabajos alcanzaron un estado terminal (no necesariamente exitoso). */ complete: boolean; jobs: JobResult[]; }; type JobResult = { jobId: string; status: JobStatus; error?: { message: string }; }; ``` | Propiedad | Descripción | Tipo | | --------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | `complete` | `true` si ya no hay trabajos en curso; `false` si se alcanzó el tiempo de espera. | `boolean` | | `jobs` | Estado final de cada trabajo. | `JobResult[]` | | `jobs[].jobId` | El identificador del trabajo. | `string` | | `jobs[].status` | Estado final: `'completed'`, `'failed'` o `'unknown'`. | [`JobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status#jobstatus) | | `jobs[].error` | Detalles del error si el trabajo falló. | `{ message: string }` | ## Ejemplos [#examples] ```typescript title="index.ts" import { GT } from 'generaltranslation'; const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key', }); // Subir y encolar const { uploadedFiles } = await gt.uploadSourceFiles(files, { sourceLocale: 'en', }); const enqueueResult = await gt.enqueueFiles(uploadedFiles, { sourceLocale: 'en', targetLocales: ['es', 'fr', 'de'], }); // Esperar a que todos los trabajos terminen (consulta cada 10s, tiempo de espera de 5 min) const result = await gt.awaitJobs(enqueueResult, { pollingIntervalSeconds: 10, timeoutSeconds: 300, }); if (!result.complete) { console.warn('Some jobs did not finish in time'); } // Verificar resultados individuales 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}`); } } ``` ## Notas [#notes] * Los trabajos que la API no encuentra se consideran de estado `'unknown'`. * Si `enqueueResult` no contiene trabajos, el método se resuelve inmediatamente con `{ complete: true, jobs: [] }`. * El tiempo de espera es un límite best effort: el método completa el sondeo actual antes de resolverse.