

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

# Programação assíncrona usando a versão 3 AWS SDK para PHP
<a name="asynchronous-requests"></a>

Você pode enviar comandos simultaneamente usando os recursos assíncronos do SDK. Você pode enviar solicitações de forma assíncrona colocando o sufixo `Async` no nome de uma operação. Isso inicia a solicitação e retorna uma promessa. 

A promessa é preenchida com o objeto do resultado em caso de êxito ou rejeitada com uma exceção em caso de falha. Isso permite criar várias promessas e fazer com que elas enviem solicitações HTTP simultaneamente quando o manipulador HTTP subjacente transfere as solicitações.

 **Importações** 

```
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **Código de exemplo** 

```
// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk([
    'region'   => 'us-west-2'
]);
// Use an Aws\Sdk class to create the S3Client object.
$s3Client = $sdk->createS3();
//Listing all S3 Bucket
$CompleteSynchronously = $s3Client->listBucketsAsync();
// Block until the result is ready.
$CompleteSynchronously = $CompleteSynchronously->wait();
```

Você pode forçar uma promessa a concluir de forma síncrona usando o método `wait` da promessa. Forçar a promessa a ser concluída também "decodifica" o estado da promessa por padrão, o que significa que ela retornará o resultado da promessa ou gerará a exceção encontrada. Ao chamar `wait()` em uma promessa, o processo é bloqueado até que a solicitação HTTP seja concluída e o resultado seja preenchido ou que uma exceção seja gerada.

Ao usar o SDK com uma biblioteca de loop de eventos, não bloqueie os resultados. Em vez disso, use o método `then()` de um resultado para acessar uma promessa que é resolvida ou rejeitada quando a operação é concluída.

 **Importações** 

```
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **Código de exemplo** 

```
// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk([
    'region'   => 'us-west-2'
]);
// Use an Aws\Sdk class to create the S3Client object.
$s3Client = $sdk->createS3();
```

```
$promise = $s3Client->listBucketsAsync();
$promise
    ->then(function ($result) {
        echo 'Got a result: ' . var_export($result, true);
    })
    ->otherwise(function ($reason) {
        echo 'Encountered an error: ' . $reason->getMessage();
    });
```