

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 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>

`data` 对象的 `AWS.Response` 属性包含由服务请求返回的序列化数据。请求成功时，`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` 参数进行访问，在此例中意味着 `imageFile` 对象的 `Item` 成员。由于 `imageFile` 成员保存字符串值，您可以通过 `S` 的 `imageFile` 子成员的值，访问图像本身的文件名。

## 分页查看返回的数据
<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>

在出现服务错误或传输错误事件时，`error` 对象的 `AWS.Response` 属性包含可用的错误数据。返回的错误采用以下形式。

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

在出错时，`data` 属性的值为 `null`。如果您处理可以处于故障状态的事件，请始终首先检查是否设置了 `error` 属性，然后尝试访问 `data` 属性的值。

## 访问原始请求对象
<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();
```