

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 等待程式
<a name="waiters"></a>

等待程式是一種用戶端抽象，用於輪詢資源，直到達到所需的狀態，或直到確定資源不會進入所需的狀態為止。這是在使用最終一致的服務時常見的任務，例如 Amazon Simple Storage Service (Amazon S3)，或是非同步建立資源的服務，例如 Amazon EC2。

編寫邏輯以持續輪詢資源的狀態可能會很麻煩且容易出錯。等待程式的目標是將此責任移出客戶程式碼，並移至 適用於 Kotlin 的 AWS SDK，其對 AWS 操作的時間層面有深入的了解。

**注意**  
下列範例使用 Amazon S3。不過，對於 AWS 服務 任何已定義一或多個等待程式的 ，這些概念都相同。所有延伸項目都會在`aws.sdk.kotlin.services.<service>.waiters`套件中定義 （例如 `aws.sdk.kotlin.services.dynamodb.waiters`)。他們也遵循標準命名慣例 (`waitUntil<Condition>`)。

下列程式碼範例顯示使用等待程式函數，可讓您避免寫入輪詢邏輯。

**匯入**

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.sdk.kotlin.services.s3.waiters.waitUntilBucketExists
```

**Code**

```
val s3 = S3Client.fromEnvironment()

// This initiates creating an S3 bucket and potentially returns before the bucket exists.
s3.createBucket { bucket = "amzn-s3-demo-bucket" }

// When this function returns, the bucket either exists or an exception
// is thrown.
s3.waitUntilBucketExists { bucket = "amzn-s3-demo-bucket" }

// The bucket now exists.
```

**注意**  
每個等待方法都會傳回執行個體，該`Outcome`執行個體可用來取得對應至所需條件的最終回應。結果也包含其他詳細資訊，例如嘗試達到所需狀態的次數。