

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Programación asíncrona con la versión 3 AWS SDK para PHP
<a name="asynchronous-requests"></a>

Puede enviar comandos de forma simultánea utilizando las características asíncronas del SDK. Puede enviar solicitudes de forma asíncrona añadiendo el sufijo `Async` al nombre de la operación. Esto inicia la solicitud y devuelve una promesa. 

La promesa se cumple cuando el objeto de resultado es correcto o se rechaza con una excepción en caso de error. Esto le permite crear varias promesas y hacer que envíen solicitudes HTTP de forma simultánea cuando el controlador HTTP subyacente transfiere las solicitudes.

 **Importaciones** 

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

 **Código de muestra** 

```
// 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();
```

Puede forzar una promesa para que se complete de forma síncrona utilizando el método `wait` de la promesa. Forzar que se complete la promesa también "desencapsula" el estado de la promesa de forma predeterminada, lo que significa que, o bien devolverá el resultado de la promesa, o lanzará la excepción que se detectó. Al llamar a `wait()` en una promesa, el proceso se bloquea hasta que se completa la solicitud HTTP y el resultado se rellena o se lanza una excepción.

Si utiliza el SDK con una biblioteca de bucles de evento, no bloquee los resultados. En su lugar, utilice el método `then()` de un resultado para obtener acceso a una promesa que se resuelve o rechaza cuando se completa la operación.

 **Importaciones** 

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

 **Código de muestra** 

```
// 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();
    });
```