

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Waiter
<a name="waiters"></a>

等待器是一种客户端抽象，用于轮询资源，直到达到所需状态，或者直到确定资源不会进入所需状态。在使用最终一致的服务（例如亚马逊简单存储服务 (Amazon S3) Simple Storage Service）或异步创建资源的服务（例如Amazon EC2）时，这是一项常见的任务。

编写逻辑以持续轮询资源状态可能非常繁琐且容易出错。服务员的目标是将这项责任从客户代码中移到对 AWS 操作时机方面有深入了解的客户守则中。 适用于 Kotlin 的 AWS SDK

**注意**  
以下示例使用 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
```

**代码**

```
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.
```

**注意**  
每个 wait 方法都会返回一个`Outcome`实例，该实例可用于获取与达到所需条件相对应的最终响应。结果还包含其他详细信息，例如尝试达到所需状态的次数。