ObterResultadoAssíncrono
Você pode usar GetAsyncResult Para recuperar o resultado de chamadas de métodos assíncronos. Algumas chamadas de método requerem algum tempo para serem executadas e podem não estar concluídas quando o sistema enviar a resposta inicial. Para obter o status ou resultado da chamada do método, use GetAsyncResult Para consultar o valor asyncHandle retornado pelo método.
`GetAsyncResult`Retorna o status geral da operação (em andamento, concluída ou com erro) de maneira padrão, mas os dados reais retornados para a operação dependem da chamada de método original e os dados de retorno são documentados em cada método.
Se o parâmetro keepResult estiver ausente ou for falso, o asyncHandle ficará inativo quando o resultado for retornado e tentativas posteriores de consultar esse asyncHandle retornarão um erro. Você pode manter o asyncHandle ativo para consultas futuras definindo o parâmetro keepResult como verdadeiro.
Parâmetros
Este método possui os seguintes parâmetros de entrada:
| Nome | Descrição | Tipo | Valor padrão | Obrigatório |
|---|---|---|---|---|
manipulador assíncrono |
Um valor que foi retornado da chamada do método assíncrono original. |
inteiro |
Nenhum |
Sim |
manterResultado |
Se verdadeiro, GetAsyncResult não remove o resultado assíncrono ao retorná-lo, permitindo consultas futuras a esse asyncHandle. |
booleano |
falso |
Não |
Valores de retorno
Este método tem os seguintes valores de retorno:
| Nome | Descrição | Tipo |
|---|---|---|
status |
Status da chamada do método assíncrono. Valores possíveis:
|
corda |
resultado |
Se o método assíncrono for concluído com sucesso, este será o resultado da operação assíncrona. Se a operação assíncrona falhar, este membro não estará presente. |
corda |
erro |
Se o status for "concluído" e o método assíncrono falhar, este membro incluirá os detalhes do erro. Se a operação assíncrona for bem-sucedida, este membro não estará presente. |
corda |
tipoDeResultado |
O tipo de operação que a chamada do método assíncrono está executando ou estava executando. |
corda |
detalhes |
Se o status for "em execução", este membro inclui informações relevantes para a operação atual do método. Se o método assíncrono não estiver em execução, este membro não estará presente. |
Objeto JSON |
criarTempo |
O horário em que o método assíncrono foi chamado, no formato UTC+0. |
string de data ISO 8601 |
hora da última atualização |
O horário da última atualização do status do método assíncrono, no formato UTC+0. |
string de data ISO 8601 |
Nota: O valor retornado por 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 esse 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 exemplo a seguir:
{
"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 no 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 exemplo a seguir:
{
"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” corresponderia a um resultado de erro da chamada de método original.
Exemplo de resposta: tarefa assíncrona bem-sucedida
Este método retorna uma resposta semelhante ao exemplo a seguir:
{
"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 da chamada do método original, caso a chamada tenha sido concluída com sucesso.
Novidade desde a versão
9,6