

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.

# Utiliser les JavaScript promesses
<a name="using-promises"></a>

La méthode `AWS.Request.promise` permet d'appeler une opération de service et de gérer le flux asynchrone au lieu d'utiliser des rappels. Dans Node.js et les scripts de navigateur, un objet `AWS.Request` est renvoyé lorsqu'une opération de service est appelée sans fonction de rappel. Vous pouvez appeler la méthode `send` de la demande pour effectuer l'appel de service.

Toutefois, `AWS.Request.promise` lance immédiatement l'appel de service et renvoie une promesse qui est soit exécutée avec la propriété `data` de la réponse, soit rejetée avec la propriété `error` de la réponse.

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

// create the promise object
var promise = request.promise();

// handle promise's fulfilled/rejected states
promise.then(
  function(data) {
    /* process the data */
  },
  function(error) {
    /* handle the error */
  }
);
```

L'exemple suivant renvoie une promesse qui est exécutée avec un objet `data` ou rejetée avec un objet `error`. Lorsque des promesses sont utilisées, un seul rappel n'est pas responsable de la détection des erreurs. Au lieu de cela, le rappel correct est appelé en fonction de la réussite ou de l'échec d'une demande.

```
var s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'us-west-2'});
var params = {
  Bucket: 'bucket',
  Key: 'example2.txt',
  Body: 'Uploaded text using the promise-based method!'
};
var putObjectPromise = s3.putObject(params).promise();
putObjectPromise.then(function(data) {
  console.log('Success');
}).catch(function(err) {
  console.log(err);
});
```

## Coordination de plusieurs promesses
<a name="multiple-promises"></a>

Dans certains cas, votre code doit effectuer plusieurs appels asynchrones qui nécessitent une action uniquement lorsqu'ils sont tous renvoyés avec succès. Si vous gérez ces appels de méthode asynchrone individuels avec des promesses, vous pouvez créer une autre promesse qui utilise la méthode `all`. Cette méthode exécute cette promesse générique si et quand la série de promesses que vous transmettez dans la méthode est exécutée. La fonction de rappel reçoit une série des valeurs des promesses transmises à la méthode `all`.

Dans l'exemple suivant, une AWS Lambda fonction doit effectuer trois appels asynchrones à Amazon DynamoDB, mais elle ne peut se terminer que lorsque les promesses pour chaque appel ont été remplies.

```
Promise.all([firstPromise, secondPromise, thirdPromise]).then(function(values) {
  
  console.log("Value 0 is " + values[0].toString);
  console.log("Value 1 is " + values[1].toString);
  console.log("Value 2 is " + values[2].toString);

  // return the result to the caller of the Lambda function
  callback(null, values);
});
```

## Prise en charge du navigateur et de Node.js pour les promesses
<a name="browser-node-promise-support"></a>

Support pour les JavaScript promesses natives (ECMAScript 2015) dépend du JavaScript moteur et de la version dans lesquels votre code s'exécute. Pour déterminer le support des JavaScript promesses dans chaque environnement dans lequel votre code doit être exécuté, consultez le [tableau de ECMAScript compatibilité](https://compat-table.github.io/compat-table/es6/) sur. GitHub

## Utilisation d'autres implémentations de promesses
<a name="using-other-promise-implementations"></a>

Outre l'implémentation native des promesses en ECMAScript 2015, vous pouvez également utiliser des bibliothèques de promesses tierces, notamment :
+ [bluebird](http://bluebirdjs.com)
+ [RSVP](https://github.com/tildeio/rsvp.js/)
+ [Q](https://github.com/kriskowal/q)

Ces bibliothèques de promesses facultatives peuvent être utiles si vous avez besoin que votre code s'exécute dans des environnements qui ne prennent pas en charge l'implémentation native des promesses en ECMAScript 5 et ECMAScript 2015.

Pour utiliser une bibliothèque de promesses tierce, définissez une dépendance de promesse sur le kit SDK en appelant la méthode `setPromisesDependency` de l'objet de configuration globale. Dans les scripts de navigateur, assurez-vous de charger la bibliothèque de promesses tierce avant de charger le kit SDK. Dans l'exemple suivant, le kit SDK est configuré pour utiliser l'implémentation dans la bibliothèque de promesses bluebird.

```
AWS.config.setPromisesDependency(require('bluebird'));
```

Pour revenir à l'utilisation de l'implémentation native de promesse du JavaScript moteur, appelez `setPromisesDependency` à nouveau en passant un nom de bibliothèque `null` au lieu d'un nom de bibliothèque.