GetAsyncResult
Você pode usar GetAsyncResult
para recuperar o resultado de chamadas de método assíncronas. Algumas chamadas de método requerem algum tempo para serem executadas e podem não ser concluídas quando o sistema envia a resposta inicial. Para obter o status ou resultado da chamada de método, use GetAsyncResult
para pesquisar o valor asyncHandle retornado pelo método.
GetAsyncResult
retorna o status geral da operação (em andamento, concluída ou erro) de forma padrão, mas os dados reais retornados para a operação dependem da chamada do método original e os dados de retorno são documentados com cada método.
Se o parâmetro keepResult estiver ausente ou falso, o asyncHandle ficará inativo quando o resultado for retornado, e mais tarde tentará consultar esse asyncHandle retornar um erro. Você pode manter o asyncHandle ativo para consultas futuras definindo o parâmetro keepResult como true.
Parâmetros
Este método tem os seguintes parâmetros de entrada:
Nome | Descrição | Tipo | Valor padrão | Obrigatório |
---|---|---|---|---|
AsyncHandle |
Um valor que foi retornado da chamada de método assíncrono original. |
número inteiro |
Nenhum |
Sim |
KeepResult |
Se verdadeiro, GetAsyncResult não remove o resultado assíncrono ao devolvê-lo, habilitando futuras consultas a esse asyncHandle. |
booleano |
falso |
Não |
Valores de retorno
Este método tem os seguintes valores de retorno:
Nome | Descrição | Tipo |
---|---|---|
estado |
Status da chamada de método assíncrono. Valores possíveis:
|
cadeia de carateres |
resultado |
Se o método assíncrono foi concluído com êxito, este é o resultado da operação assíncrona. Se a operação assíncrona falhou, este membro não está presente. |
cadeia de carateres |
erro |
Se o status estiver concluído e o método assíncrono falhar, esse membro inclui os detalhes do erro. Se a operação assíncrona foi bem-sucedida, este membro não está presente. |
cadeia de carateres |
Tipo resultado |
O tipo de operação que a chamada de método assíncrono está ou estava executando. |
cadeia de carateres |
detalhes |
Se o estado estiver em execução, este membro inclui informações relevantes para o funcionamento atual do método. Se o método assíncrono não estiver em execução, este membro não está presente. |
Objeto JSON |
CreateTime |
O tempo em que o método assíncrono foi chamado, em formato UTC-0. |
String de data ISO 8601 |
LastUpdateTime |
A hora em que o status do método assíncrono foi atualizado pela última vez, no formato UTC-0. |
String de data ISO 8601 |
Nota: o valor de retorno de GetAsyncResult é essencialmente uma versão aninhada da resposta JSON padrão com um campo de status adicional.
Exemplo de solicitação
As solicitações para este método são semelhantes ao seguinte exemplo:
{ "method": "GetAsyncResult", "params": { "asyncHandle" : 389 }, "id" : 1 }
Exemplo de resposta: Erro de método
Este método retorna uma resposta semelhante ao seguinte exemplo:
{ "error": { "code": 500, "message": "DBClient operation requested on a non-existent path at [/asyncresults/1]", "name": "xDBNoSuchPath" }, "id": 1 }
Se "response" fosse o objeto de resposta JSON da chamada GetAsyncResult, então "response.error" corresponderia a um erro com o próprio método GetAsyncResult (como consultar um asyncHandle inexistente).
Exemplo de resposta: Erro de tarefa assíncrona
Este método retorna uma resposta semelhante ao seguinte exemplo:
{ "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" } }
O "response.result.error" corresponde a um erro resultante da chamada de método original.
Exemplo de resposta: Sucesso de tarefas assíncronas
Este método retorna uma resposta semelhante ao seguinte exemplo:
{ "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" } }
O "response.result.result" é o valor de retorno para a chamada de método original se a chamada for concluída com êxito.
Novo desde a versão
9,6