Get非 同步結果
您可以使用「Getynresult」擷取非同步方法呼叫的結果。有些方法呼叫需要一段時間才能執行、而且系統傳送初始回應時可能尚未完成。若要取得方法呼叫的狀態或結果、請使用「Getynresult」來輪詢方法傳回的asyncdyle值。
「GetSuccession Result」會以標準方式傳回作業的整體狀態(進行中、已完成或錯誤)、但針對作業傳回的實際資料則取決於原始方法呼叫、而且每種方法都會記錄傳回資料。
如果缺少keepResult參數或參數為假、則傳回結果時asyncdyle會變成非作用中狀態、之後會嘗試查詢該asyncdle傳回錯誤。您可以將keepResult參數設定為true、讓asyncdyle在未來的查詢中保持作用狀態。
參數
此方法具有下列輸入參數:
| 名稱 | 說明 | 類型 | 預設值 | 必要 |
|---|---|---|---|---|
asyncdle |
從原始非同步方法呼叫傳回的值。 |
整數 |
無 |
是的 |
keepResult |
如果為true、Getynpre Result在傳回時不會移除非同步結果、因此日後會對該asyncdle進行查詢。 |
布林值 |
錯 |
否 |
傳回值
此方法具有下列傳回值:
| 名稱 | 說明 | 類型 |
|---|---|---|
狀態 |
非同步方法呼叫的狀態。可能值:
|
字串 |
結果 |
如果非同步方法成功完成、這是非同步作業的結果。如果非同步作業失敗、則此成員不存在。 |
字串 |
錯誤 |
如果狀態為「完整」、且非同步方法失敗、則此成員會包含錯誤詳細資料。如果非同步作業成功、則此成員不存在。 |
字串 |
結果類型 |
非同步方法呼叫正在執行或正在執行的操作類型。 |
字串 |
詳細資料 |
如果狀態為執行中、則此成員會包含與方法目前作業相關的資訊。如果非同步方法未執行、則此成員不存在。 |
Json物件 |
CREATETIM |
以UTC +0格式呼叫非同步方法的時間。 |
ISO 8601日期字串 |
最後更新時間 |
非同步方法狀態上次更新的時間、格式為UTC+0。 |
ISO 8601日期字串 |
附註: GetSuccessynresult的傳回值基本上是標準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」是來自Getynprynet呼叫的Json回應物件、則「response.error」會對應至Getynprynet方法本身的錯誤(例如查詢不存在的asyncdyle)。
回應範例:非同步工作錯誤
此方法會傳回類似下列範例的回應:
{
"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"
}
}
「回應.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"
}
}
如果通話成功完成、「respose.resresult.result」是原始方法通話的傳回值。
新的自版本
9.6