

 [適用於 JavaScript 的 AWS SDK V3 API 參考指南](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)詳細說明 第 3 版 適用於 JavaScript 的 AWS SDK (V3) 的所有 API 操作。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 JavaScript 承諾
<a name="using-promises"></a>

使用服務用戶端的 適用於 JavaScript 的 AWS SDK v3 方法 `ListTablesCommand` () 進行服務呼叫和管理非同步流程，而不是使用回呼。下列範例顯示如何在 中取得 Amazon DynamoDB 資料表的名稱`us-west-2`。

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
const dbClient = new DynamoDBClient({ region: 'us-west-2' });

dbClient.listtables(new ListTablesCommand({}))
  .then(response => {
    console.log(response.TableNames.join('\n'));
  })
  .catch((error) => {
    console.error(error);
  });
```

## 協調多個承諾
<a name="multiple-promises"></a>

在某些情況下，程式碼必須發出多個非同步呼叫，且唯有在這些呼叫全部成功回傳時，才需要採取動作。如果您要透過 promise 來管理個別非同步方法呼叫，則可建立採用 `all` 方法的額外 promise。

您傳遞至方法的 promise 陣列都達成時，此方法即達成這個全域 promise。promise 傳遞至 `all` 方法的陣列值，會傳遞至回呼函數。

在下列範例中， AWS Lambda 函數必須對 Amazon DynamoDB 進行三次非同步呼叫，但只能在完成每次呼叫的承諾之後才能完成。

```
const values = await Promise.all([firstPromise, secondPromise, thirdPromise]);

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 values;
```

## 瀏覽器和 Node.js 對 promises 的支援
<a name="browser-node-promise-support"></a>

對原生 JavaScript promise (ECMAScript 2015) 的支援將視程式碼執行的 JavaScript 引擎與版本而定。為了協助判斷程式碼需要執行的每個環境中對 JavaScript 承諾的支援，請參閱 GitHub 上的 [ECMAScript 相容性資料表](https://compat-table.github.io/compat-table/es6/)。