使用 JavaScript 承諾 - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API參考指南詳細描述 AWS SDK for JavaScript 第 3 版 (V3) 的所有API操作。

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

使用 JavaScript 承諾

使用服務用戶端的 AWS SDK for JavaScript 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); });

協調多個承諾

在某些情況下,程式碼必須發出多個非同步呼叫,且唯有在這些呼叫全部成功回傳時,才需要採取動作。如果您要透過 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 對承諾的支援

原生 JavaScript 承諾的支援 (ECMAScript 2015) JavaScript取決於程式碼執行的引擎和版本。若要協助判斷程式碼需要執行的每個環境中對 JavaScript 承諾的支援,請參閱上的ECMAScript相容性資料表 GitHub。