# General Translation Platform: awaitJobs
URL: https://generaltranslation.com/ja/docs/platform/core/reference/gt-class-methods/translation/await-jobs.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: キューに入った翻訳ジョブを、完了・失敗するかタイムアウトするまでポーリングします。awaitJobs の API リファレンス。

すべてのジョブが `completed`、`failed`、`unknown` のいずれかになるか、タイムアウトに達するまで待機します。翻訳ジョブとセットアップジョブの両方に対応しています。

## 概要 [#overview]

[`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) の結果またはジョブ ID の配列を `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('All jobs finished');
} else {
  console.log('Timed out — some jobs still in progress');
}
```

シグネチャ:

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

*警告: `complete: true` は、すべてのジョブが終端状態に達したことを意味します。これは、すべてのジョブが成功したことを意味する**ものではありません**。成功しているかどうかは、各 `job.status` を確認してください。*

## 仕組み [#how-it-works]

* **自動ポーリング。** 手動のポーリングループは不要です。`while` ループ内で [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status) を自分で呼び出す必要はありません。
* **終端状態。** すべてのジョブが `completed`、`failed`、または `unknown` になると解決されます。API が見つけられないジョブは `'unknown'` として扱われます。
* **期限。** 各ステータスリクエストのタイムアウトは最大 60 秒で、全体の残り時間がそれより短い場合は残り時間に合わせて短縮されます。タイムアウトに達すると、最後に取得したステータスが `complete: false` とともに返されます。これらのジョブは、キュー待ち、処理中、または不明の状態のままである可能性があります。カスタムの fetch 実装では、速やかに停止できるようキャンセルに対応する必要があります。
* **エラー。** 期限前にステータスエラーが発生した場合は reject されます。期限後に発生したエラーについては、代わりに未完了の結果が返されます。ポーリングを停止しても、リモートのジョブはキャンセルされません。
* **空の入力。** 認証情報とプロジェクト ID を検証した後、入力が空であれば `{ complete: true, jobs: [] }` を返して解決されます。

## パラメータ [#parameters]

| パラメータ                 | 説明                                                                                                             | 型                                                                                                             | 任意  | デフォルト |
| --------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --- | ----- |
| [`jobs`](#jobs)       | [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) が返す結果、またはジョブ IDの配列。 | [`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) などの別のワークフローが返すジョブ ID です。エンキュー結果を渡す場合、その `jobData` には、ポーリング対象のジョブを特定する情報が含まれます。

### `options`

**型** `AwaitJobsOptions` · **任意**

`generaltranslation/types` で定義されたポーリング設定です。[API のポーリングオプション](/docs/platform/core/reference/api-client#job-polling)とは異なり、クラスのオプションには `onPoll` や呼び出し元のシグナルは含まれません:

| Field                    | 説明                         | 型        | 任意 | デフォルト       |
| ------------------------ | -------------------------- | -------- | -- | ----------- |
| `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` | 最新のステータス。タイムアウト時点では、まだ `'queued'` または `'processing'` の場合があります。 | [`JobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status#jobstatus) |
| `jobs[].error`  | ジョブが失敗した場合のエラー詳細。                                              | `{ message: string }`                                                                                |

## 例 [#examples]

ジョブ ID を直接ポーリングする：

```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: [] }` が返されます。
* タイムアウト時は、最後に受け付けたステータスが返されます。これは必ずしも終端ステータスとは限りません。遅れて届いたポーリング結果は破棄されます。

## Sitemap

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