GetAsyncResultを使用すると、非同期メソッドの呼び出し結果を取得できます。一部のメソッドの呼び出しには時間がかかり、システムが初期応答を送信したときに完了していない場合があります。メソッド呼び出しのステータスまたは結果を取得するには、GetAsyncResultを使用してメソッドから返されるasyncHandleの値をポーリングします。
GetAsyncResult は、処理の全般的なステータス(処理中、完了、またはエラー)を標準的な方法で返しますが、実際に処理で返されるデータは元のメソッド呼び出しに応じて異なります。返されるデータについては各メソッドの説明に記載されています。
keepResultパラメータが見つからないか「false」の場合、asyncHandleは結果が返されると非アクティブになり、あとからasyncHandleがエラーを返しているかを照会しようとします。keepResultパラメータをtrueに設定すると、今後照会するときのためにasyncHandleをアクティブな状態で維持できます。
このメソッドの入力パラメータは次のとおりです。
名前 | 説明 | タイプ | デフォルト値 | 必須 |
---|---|---|---|---|
asyncHandle | 元の非同期メソッドの呼び出しで返された値。 | 整数 | なし | ○ |
keepResult | 「true」の場合、GetAsyncResultは値を返すときに非同期結果を削除しないため、以降も同じasyncHandleに照会できます。 | ブーリアン | false | × |
このメソッドの戻り値は次のとおりです。
名前 | 説明 | タイプ |
---|---|---|
status | 非同期メソッド呼び出しのステータス。有効な値は次のとおりです。
|
文字列 |
result | 非同期メソッドが正常に完了した場合、これが非同期処理の結果になります。非同期処理が失敗した場合、このメンバーは表示されません。 | 文字列 |
error | ステータスが「complete」で非同期メソッドが失敗した場合、このメンバーにはエラーの詳細が含まれます。非同期処理が成功した場合、このメンバーは表示されません。 | 文字列 |
resultType | 非同期メソッド呼び出しが実行中または実行済みの処理のタイプ。 | 文字列 |
details | ステータスが「running」の場合、このメンバーにはメソッドの現在の処理に関連する情報が含まれます。非同期メソッドが実行中でない場合、このメンバーは表示されません。 | JSONオブジェクト |
createTime | 非同期メソッドが呼び出された時刻(UTC+0形式)。 | ISO 8601形式の日付文字列 |
lastUpdateTime | 非同期メソッドのステータスが最後に更新された時刻(UTC+0形式)。 | ISO 8601形式の日付文字列 |
このメソッドの要求例を次に示します。
{ "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" } }
「response.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" } }
呼び出しが正常に完了した場合、「response.result.result」は元のメソッド呼び出しの戻り値です。