

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Programmazione asincrona con la versione 3 AWS SDK per PHP
<a name="asynchronous-requests"></a>

È possibile inviare comandi simultaneamente utilizzando le funzionalità asincrone dell'SDK. È possibile inviare le richieste in modo asincrono aggiungendo un suffisso al nome dell'operazione con `Async`. In questo modo si avvia la richiesta e si restituisce una promessa. 

La promessa viene soddisfatta con l'oggetto risultato in caso di esito positivo o rifiutata con un'eccezione in caso di errore. In questo modo è possibile creare più promesse e richiedere l'invio simultaneo di richieste HTTP quando il gestore HTTP sottostante trasferisce le richieste.

 **Importazioni** 

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

 **Codice di esempio** 

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

È possibile forzare il completamento sincrono di una promessa utilizzando il metodo `wait` della promessa. Forzando il completamento della promessa, inoltre, "si apre" lo stato della promessa per impostazione predefinita, ovvero viene restituito l'esito della promessa oppure viene generata l'eccezione che è stata riscontrata. Quando si richiama `wait()` su una promessa, il processo si blocca fino a quando la richiesta HTTP non viene completata e il risultato viene popolato, oppure viene creata un'eccezione.

Quando si utilizza l'SDK con una libreria di loop eventi, non bloccare i risultati. Occorre utilizzare invece il metodo `then()` di un risultato per accedere a una promessa che viene risolta o rifiutata al termine dell'operazione.

 **Importazioni** 

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

 **Codice di esempio** 

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