

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。如需如何遷移的其他詳細資訊和資訊，請參閱此[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

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

# 使用回應物件
<a name="the-response-object"></a>

呼叫服務物件方法後，該方法即會將 `AWS.Response` 物件傳遞至回呼函數，以便傳回相關內容。您可以透過 `AWS.Response` 物件的屬性來存取回應內容。`AWS.Response` 物件有兩種屬性可供您存取回應內容：
+ `data` 屬性
+ `error` 屬性

在使用標準回呼機制的情況下，系統會提供這兩種屬性並將其做為非同步回呼函數上的參數，如下方範例所示。

```
function(error, data) {
    if (error) {
        // error handling code
        console.log(error);
    } else {
        // data handling code
        console.log(data);
    }
}
```

## 在回應物件中存取傳回的資料
<a name="response-data-property"></a>

`AWS.Response` 物件的 `data` 屬性包含服務請求所傳回的序列化資料。當請求成功時，`data` 屬性會包含一個物件，其中涵蓋所傳回資料的映射。如果發生錯誤，則 `data` 屬性可為 null。

以下是呼叫 DynamoDB 資料表 `getItem`方法的範例，以擷取影像檔案名稱，做為遊戲的一部分。

```
// Initialize parameters needed to call DynamoDB
var slotParams = {
    Key : {'slotPosition' : {N: '0'}},
    TableName : 'slotWheels',
    ProjectionExpression: 'imageFile'
};

// prepare request object for call to DynamoDB
var request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams);
// log the name of the image file to load in the slot machine
request.on('success', function(response) {
    // logs a value like "cherries.jpg" returned from DynamoDB
    console.log(response.data.Item.imageFile.S);
});
// submit DynamoDB request
request.send();
```

在此範例中，DynamoDB 資料表是顯示槽機器提取結果的影像查詢，如 中的參數所指定`slotParams`。

成功呼叫 `getItem`方法時，`AWS.Response`物件的 `data` 屬性會包含 DynamoDB 傳回的`Item`物件。您可以根據請求的 `ProjectionExpression` 參數來存取傳回的資料。在此案例中，該參數指的是 `Item` 物件的 `imageFile` 成員。由於 `imageFile` 成員會保留字串值，您將能透過 `imageFile` 的 `S` 子成員值來存取映像本身的檔案名稱。

## 瀏覽傳回的資料分頁
<a name="response-paged-data"></a>

有時候，服務請求傳回的 `data` 屬性內容會橫跨多個頁面。若要存取下一頁資料，請呼叫 `response.nextPage` 方法。這個方法會傳送新的請求。您能夠利用回呼、成功和錯誤接聽程式來擷取該請求的回應。

您可以呼叫 `response.hasNextPage` 方法，檢查服務請求傳回的資料是否有其他資料頁面。這個方法會傳回布林值，指出呼叫 `response.nextPage` 時是否有傳回其他資料。

```
s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) {
    // do something with response.data
    if (response.hasNextPage()) {
        response.nextPage().on('success', handlePage).send();
    }
}).send();
```

## 存取來自回應物件的錯誤資訊
<a name="response-error-property"></a>

當服務錯誤或傳輸錯誤時，`AWS.Response` 物件的 `error` 屬性會包含可用的錯誤資料。所傳回錯誤的格式如下。

```
{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }
```

若發生錯誤，`data` 屬性值即為 `null`。如果您要處理處於失敗狀態的事件，請務必在嘗試存取 `data` 屬性值前，隨時檢查該事件是否已設定 `error` 屬性。

## 存取來源請求物件
<a name="response-request-property"></a>

`request` 屬性可讓您存取來源 `AWS.Request` 物件。這可用來參照原始 `AWS.Request` 物件，以存取其所傳送的原始參數。在下方範例中，系統會使用 `request` 屬性來存取原始服務請求的 `Key` 參數。

```
s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) {
   console.log("Key was", response.request.params.Key);
}).send();
```