

 AWS SDK untuk JavaScript V2 telah mencapai end-of-support. Kami menyarankan Anda bermigrasi ke [AWS SDK untuk JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat [pengumuman](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/) ini.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan JavaScript Janji
<a name="using-promises"></a>

`AWS.Request.promise`Metode ini menyediakan cara untuk memanggil operasi layanan dan mengelola aliran asinkron alih-alih menggunakan callback. Dalam Node.js dan skrip browser, `AWS.Request` objek dikembalikan ketika operasi layanan dipanggil tanpa fungsi callback. Anda dapat memanggil `send` metode permintaan untuk melakukan panggilan layanan.

Namun, `AWS.Request.promise` segera mulai panggilan layanan dan mengembalikan janji yang dipenuhi dengan `data` properti respons atau ditolak dengan `error` properti respons.

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

Contoh berikutnya mengembalikan janji yang dipenuhi dengan `data` objek, atau ditolak dengan `error` objek. Menggunakan janji, satu panggilan balik tidak bertanggung jawab untuk mendeteksi kesalahan. Sebagai gantinya, callback yang benar dipanggil berdasarkan keberhasilan atau kegagalan permintaan.

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

## Koordinasi Beberapa Janji
<a name="multiple-promises"></a>

Dalam beberapa situasi, kode Anda harus membuat beberapa panggilan asinkron yang memerlukan tindakan hanya jika semuanya berhasil dikembalikan. Jika Anda mengelola panggilan metode asinkron individual tersebut dengan janji, Anda dapat membuat janji tambahan yang menggunakan metode ini. `all` Metode ini memenuhi janji payung ini jika dan ketika berbagai janji yang Anda berikan ke metode terpenuhi. Fungsi callback dilewatkan sebuah array dari nilai-nilai dari janji-janji yang diteruskan ke `all` metode.

Dalam contoh berikut, AWS Lambda fungsi harus membuat tiga panggilan asinkron ke Amazon DynamoDB tetapi hanya dapat diselesaikan setelah janji untuk setiap panggilan terpenuhi.

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

## Browser dan Node.js Support for Promises
<a name="browser-node-promise-support"></a>

Support for native JavaScript promises (ECMAScript 2015) tergantung pada JavaScript mesin dan versi di mana kode Anda dijalankan. Untuk membantu menentukan dukungan untuk JavaScript janji di setiap lingkungan tempat kode Anda perlu dijalankan, lihat [Tabel ECMAScript Kompatibilitas](https://compat-table.github.io/compat-table/es6/) di. GitHub

## Menggunakan Implementasi Janji Lainnya
<a name="using-other-promise-implementations"></a>

Selain implementasi janji asli pada tahun ECMAScript 2015, Anda juga dapat menggunakan pustaka janji pihak ketiga, termasuk:
+ [burung biru](http://bluebirdjs.com)
+ [RSVP](https://github.com/tildeio/rsvp.js/)
+ [Q](https://github.com/kriskowal/q)

Pustaka janji opsional ini dapat berguna jika Anda memerlukan kode Anda untuk berjalan di lingkungan yang tidak mendukung implementasi janji asli di ECMAScript 5 dan ECMAScript 2015.

Untuk menggunakan pustaka janji pihak ketiga, tetapkan dependensi janji pada SDK dengan memanggil `setPromisesDependency` metode objek konfigurasi global. Dalam skrip browser, pastikan untuk memuat pustaka janji pihak ketiga sebelum memuat SDK. Dalam contoh berikut, SDK dikonfigurasi untuk menggunakan implementasi di pustaka janji bluebird.

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

Untuk kembali menggunakan implementasi janji asli JavaScript mesin, panggil `setPromisesDependency` lagi, berikan nama `null` alih-alih perpustakaan.