

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Os waiters são uma abstração do lado do cliente usados para sondar um recurso da até que o estado desejado seja atingido ou até que seja determinado que o recurso não entrará no estado desejado. Essa é uma tarefa comum quando se trabalha com serviços que acabam sendo consistentes, como o Amazon Simple Storage Service (Amazon S3), ou serviços que criam recursos de forma assíncrona, como o Amazon EC2. 

Escrever uma lógica para sondar continuamente o status de um recurso pode ser complicado e propenso a erros. O objetivo dos garçons é transferir essa responsabilidade do código do cliente para o AWS SDK para Kotlin, que tem um conhecimento profundo dos aspectos de cronometragem da operação. AWS 

**nota**  
Os exemplos a seguir usam o Amazon S3. No entanto, os conceitos são os mesmos para qualquer AWS service (Serviço da AWS) que tenha um ou mais waiters definidos. Todas as extensões são definidas no `aws.sdk.kotlin.services.<service>.waiters` pacote (como`aws.sdk.kotlin.services.dynamodb.waiters`). Eles também seguem uma convenção de nomenclatura padrão (`waitUntil<Condition>`).

O exemplo de código a seguir mostra o uso de uma função de espera que permite evitar escrever a lógica de pesquisa.

**Importações**

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

**Código**

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

**nota**  
Cada método de espera retorna uma `Outcome` instância que pode ser usada para obter a resposta final que corresponde ao alcance da condição desejada. Um resultado também contém detalhes adicionais, como o número de tentativas feitas para alcançar o estado desejado.