

La AWS SDK pour JavaScript v2 est arrivée end-of-support. Nous vous recommandons de migrer vers la [AWS SDK pour JavaScript version 3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Pour plus de détails et d'informations sur la façon de migrer, veuillez consulter cette [annonce](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation d'un écouteur d'événements d'un objet de demande
<a name="using-a-response-event-handler"></a>

Si vous ne créez pas de fonction de rappel anonyme et que vous n'en transmettez pas en tant que paramètre lorsque vous appelez une méthode d'objet de service, l'appel de méthode génère un objet `AWS.Request` qui doit être envoyé manuellement à l'aide de sa méthode `send`.

Pour traiter la réponse, vous devez créer un écouteur d'événements pour l'objet `AWS.Request` afin d'enregistrer une fonction de rappel pour l'appel de méthode. L'exemple suivant montre comment créer l'objet `AWS.Request` pour appeler une méthode d'objet de service et l'écouteur d'événements afin que le renvoi aboutisse.

```
// create the AWS.Request object
var request = new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances();

// register a callback event handler
request.on('success', function(response) {
  // log the successful data response
  console.log(response.data); 
});

// send the request
request.send();
```

Lorsque la méthode `send` sur l'objet `AWS.Request` est appelée, le gestionnaire d'événements s'exécute lorsque l'objet de service reçoit un objet `AWS.Response`.

Pour plus d'informations sur l'`AWS.Request`objet, consultez [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html)la référence de l'API. Pour plus d'informations sur l'`AWS.Response`objet, consultez [Utilisation de l'objet de réponse](the-response-object.md) ou consultez [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Response.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Response.html)la référence de l'API.

## Création de chaînes de plusieurs rappels
<a name="response-chaining-callbacks"></a>

Vous pouvez enregistrer plusieurs rappels sur un objet de demande. Plusieurs rappels peuvent être enregistrés pour différents événements ou pour un même événement. Vous pouvez également créer des chaînes de rappels comme l'illustré dans l'exemple suivant.

```
request.
  on('success', function(response) {
    console.log("Success!");
  }).
  on('error', function(response) {
    console.log("Error!");
  }).
  on('complete', function() {
    console.log("Always!");
  }).
  send();
```

## Événements d'achèvement d'objet de demande
<a name="request-object-completion-events"></a>

L'objet `AWS.Request` génère ces événements d'achèvement en fonction de la réponse de chaque méthode d'opération de service :
+ `success`
+ `error`
+ `complete`

Vous pouvez enregistrer une fonction de rappel en réponse à ces événements. Pour obtenir la liste complète de tous les événements liés aux objets de requête, consultez [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html)la référence de l'API.

### L'événement success
<a name="request-success-event"></a>

L'événement `success` est généré en cas de réponse positive reçue de l'objet de service. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('success', function(response) { 
  // event handler code
});
```

La réponse fournit une propriété `data` qui contient les données de la réponse sérialisée provenant du service. Par exemple, l'appel suivant à la `listBuckets` méthode de l'objet de service Amazon S3

```
s3.listBuckets.on('success', function(response) {
  console.log(response.data);
}).send();
```

renvoie la réponse, puis affiche le contenu de la propriété `data` suivant dans la console.

```
{ Owner: { ID: '...', DisplayName: '...' },
  Buckets: 
   [ { Name: 'someBucketName', CreationDate: someCreationDate },
     { Name: 'otherBucketName', CreationDate: otherCreationDate } ],
  RequestId: '...' }
```

### L'événement error
<a name="request-error-event"></a>

L'événement `error` est généré en cas de réponse d'erreur reçue de l'objet de service. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('error', function(error, response) { 
  // event handling code
});
```

Lorsque l'événement `error` est déclenché, la valeur de la propriété `data` de la réponse est `null` et la propriété `error` contient les données relatives à l'erreur. L'objet `error` associé est transmis en tant que premier paramètre à la fonction de rappel enregistrée. Par exemple, le code suivant :

```
s3.config.credentials.accessKeyId = 'invalid';
s3.listBuckets().on('error', function(error, response) {
  console.log(error);
}).send();
```

renvoie l'erreur, puis affiche les données suivantes relatives à l'erreur dans la console.

```
{ code: 'Forbidden', message: null }
```

### L'événement complete
<a name="request-complete-event"></a>

L'événement `complete` est déclenché lorsqu'un appel d'objet de service est terminé, que l'appel ait aboutit ou non. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('complete', function(response) { 
  // event handler code
});
```

Utilisez le rappel de l'événement `complete` pour gérer les demandes de nettoyage qui doivent s'exécuter quel que soit le résultat. Si vous utilisez des données de réponse dans un rappel pour l'événement `complete`, commencez par vérifier les propriétés `response.data` ou `response.error` avant d'essayer d'y accéder, comme illustré dans l'exemple suivant.

```
request.on('complete', function(response) {
  if (response.error) {
    // an error occurred, handle it
  } else {
    // we can use response.data here
  }
}).send();
```

## Événements HTTP d'objet de demande
<a name="request-object-http-events"></a>

L'objet `AWS.Request` génère ces événements HTTP en fonction de la réponse de chaque méthode d'opération de service :
+ `httpHeaders`
+ `httpData`
+ `httpUploadProgress`
+ `httpDownloadProgress`
+ `httpError`
+ `httpDone`

Vous pouvez enregistrer une fonction de rappel en réponse à ces événements. Pour obtenir la liste complète de tous les événements liés aux objets de requête, consultez [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html)la référence de l'API.

### L'événement httpHeaders
<a name="request-httpheaders-event"></a>

L'événement `httpHeaders` est déclenché lorsque des en-têtes sont envoyés par le serveur distant. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('httpHeaders', function(statusCode, headers, response) {
  // event handling code
});
```

Le paramètre `statusCode` pour la fonction de rappel est le code d'état HTTP. Le paramètre `headers` contient les en-têtes de la réponse.

### L'événement httpData
<a name="request-httpdata-event"></a>

L'événement `httpData` est déclenché pour diffuser des paquets de données de réponse à partir du service. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('httpData', function(chunk, response) {
  // event handling code
});
```

Cet événement est généralement utilisé pour recevoir des réponses volumineuses en plusieurs parties lorsqu'il n'est pas possible de charger l'ensemble de la réponse dans la mémoire. Cet évènement comporte un paramètre `chunk` supplémentaire qui contient une partie des données réelles provenant du serveur.

Si vous enregistrez un rappel pour l'événement `httpData`, la propriété `data` de la réponse contient la totalité de la sortie sérialisée pour la demande. Vous devez supprimer l'écouteur `httpData` par défaut si vous ne disposez pas de l'analyse et de la surcharge de mémoire supplémentaires pour les gestionnaires intégrés.

### Les httpUploadProgress et httpDownloadProgress événements
<a name="request-httpupload-download-progress-event"></a>

L'événement `httpUploadProgress` est déclenché lorsque la demande HTTP a chargé de nouvelles données. De la même manière, l'événement `httpDownloadProgress` est déclenché lorsque la demande HTTP a téléchargé de nouvelles données. Voici comment enregistrer une fonction de rappel pour ces événements.

```
request.on('httpUploadProgress', function(progress, response) {
  // event handling code
})
.on('httpDownloadProgress', function(progress, response) {
  // event handling code
});
```

Le paramètre `progress` pour la fonction de rappel contient un objet comprenant le nombre d'octets chargés et le nombre total d'octets de la demande.

### L'événement httpError
<a name="request-httperror-event"></a>

L'événement `httpError` est déclenché lorsque la demande HTTP échoue. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('httpError', function(error, response) {
  // event handling code
});
```

Le paramètre `error` pour la fonction de rappel contient l'erreur qui a été déclenchée.

### L'événement httpDone
<a name="request-httpdone-event"></a>

L'événement `httpDone` est déclenché lorsque le serveur termine l'envoi de données. Voici comment enregistrer une fonction de rappel pour cet événement.

```
request.on('httpDone', function(response) {
  // event handling code
});
```