GetAsyncResult
您可以使用 `GetAsyncResult`检索异步方法调用的结果。某些方法调用需要一段时间才能运行,并且在系统发送初始响应时可能无法完成。要获取方法调用的状态或结果、请使用 `GetAsyncResult`轮询方法返回的asyncHandle值。
`GetAsyncResult`以标准方式返回操作的整体状态(进行中、已完成或错误)、但为操作返回的实际数据取决于原始方法调用、并将返回数据与每个方法记录在一起。
如果 keepResult 参数缺失或错误,则返回结果后 asyncHandle 将变为非活动状态,并且稍后尝试查询 asyncHandle 时会返回错误。通过将 keepResult 参数设置为 true ,您可以使 asyncHandle 保持活动状态以供将来查询。
参数
此方法具有以下输入参数:
| 名称 | 说明 | 键入 | 默认值 | 必填 |
|---|---|---|---|---|
异步处理 |
从原始异步方法调用返回的值。 |
整型 |
无 |
是 |
keepResult |
如果为 true ,则 GetAsyncResult 不会在返回异步结果后将其删除,从而允许将来查询该 asyncHandle 。 |
boolean |
false |
否 |
返回值
此方法具有以下返回值:
| 名称 | 说明 | 键入 |
|---|---|---|
状态 |
异步方法调用的状态。可能值:
|
string |
结果 |
如果异步方法成功完成,则这是异步操作的结果。如果异步操作失败,则此成员不存在。 |
string |
错误 |
如果状态为 complete 且异步方法失败,则此成员包含错误详细信息。如果异步操作成功,则此成员不存在。 |
string |
resultType |
异步方法调用正在执行或正在执行的操作类型。 |
string |
详细信息 |
如果状态为 running ,则此成员包含与方法的当前操作相关的信息。如果异步方法未运行,则此成员不存在。 |
JSON 对象 |
CREATETIME |
调用异步方法的时间,采用 UTC+0 格式。 |
ISO 8601 日期字符串 |
最后更新时间 |
上次更新异步方法状态的时间,采用 UTC+0 格式。 |
ISO 8601 日期字符串 |
-
注: * GetAsyncResult 的返回值实质上是标准 JSON 响应的嵌套版本,并具有一个附加的状态字段。
请求示例
此方法的请求类似于以下示例:
{
"method": "GetAsyncResult",
"params": {
"asyncHandle" : 389
},
"id" : 1
}
响应示例:方法错误
此方法返回类似于以下示例的响应:
{
"error": {
"code": 500,
"message": "DBClient operation requested on a non-existent path at [/asyncresults/1]",
"name": "xDBNoSuchPath"
},
"id": 1
}
如果 "response" 是 GetAsyncResult 调用中的 JSON 响应对象,则 "response.error" 将与 GetAsyncResult 方法本身的错误相对应(例如,查询不存在的 asyncHandle )。
响应示例:异步任务错误
此方法返回类似于以下示例的响应:
{
"id": 1,
"result": {
"createTime": "2016-01-01T02:05:53Z",
"error": {
"bvID": 1,
"message": "Bulk volume job failed",
"name": "xBulkVolumeScriptFailure",
"volumeID": 34
},
"lastUpdateTime": "2016-01-21T02:06:56Z",
"resultType": "BulkVolume",
"status": "complete"
}
}
reonse.result.error 对应于原始方法调用的错误结果。
响应示例:异步任务成功
此方法返回类似于以下示例的响应:
{
"id": 1,
"result": {
"createTime": "2016-01-01T22:29:18Z",
"lastUpdateTime": "2016-01-01T22:45:51Z",
"result": {
"cloneID": 25,
"message": "Clone complete.",
"volumeID": 47
},
"resultType": "Clone",
"status": "complete"
}
}
reonse.result.result 是在调用成功完成时原始方法调用的返回值。
自版本以来的新增功能
9.6