ObtenerResultadoAsíncrono
Puedes usar GetAsyncResult para recuperar el resultado de las llamadas a métodos asíncronos. Algunas llamadas a métodos requieren cierto tiempo para ejecutarse y es posible que no hayan finalizado cuando el sistema envíe la respuesta inicial. Para obtener el estado o el resultado de la llamada al método, utilice GetAsyncResult para consultar el valor asyncHandle devuelto por el método.
`GetAsyncResult`Devuelve el estado general de la operación (en curso, completada o con error) de forma estándar, pero los datos reales devueltos para la operación dependen de la llamada al método original y los datos devueltos se documentan con cada método.
Si el parámetro keepResult no existe o es falso, el asyncHandle se vuelve inactivo cuando se devuelve el resultado, y los intentos posteriores de consultar ese asyncHandle devuelven un error. Puedes mantener activo el asyncHandle para futuras consultas configurando el parámetro keepResult en verdadero.
Parámetros
Este método tiene los siguientes parámetros de entrada:
| Nombre | Descripción | Tipo | Valor predeterminado | Requerido |
|---|---|---|---|---|
manejador asíncrono |
Un valor que fue devuelto por la llamada al método asíncrono original. |
entero |
Ninguno |
Sí |
mantenerResultado |
Si es cierto, GetAsyncResult no elimina el resultado asíncrono al devolverlo, lo que permite realizar consultas futuras a ese asyncHandle. |
booleano |
FALSO |
No |
Valores de retorno
Este método tiene los siguientes valores de retorno:
| Nombre | Descripción | Tipo |
|---|---|---|
estado |
Estado de la llamada al método asíncrono. Valores posibles:
|
cadena |
resultado |
Si el método asíncrono se completó correctamente, este es el resultado de la operación asíncrona. Si la operación asíncrona falló, este miembro no está presente. |
cadena |
error |
Si el estado es completo y el método asíncrono falló, este miembro incluye los detalles del error. Si la operación asíncrona tuvo éxito, este miembro no está presente. |
cadena |
tipo de resultado |
El tipo de operación que realiza o realizaba la llamada al método asíncrono. |
cadena |
detalles |
Si el estado es "en ejecución", este miembro incluye información relevante para el funcionamiento actual del método. Si el método asíncrono no se está ejecutando, este miembro no está presente. |
Objeto JSON |
crearTiempo |
La hora en que se llamó al método asíncrono, en formato UTC+0. |
cadena de fecha ISO 8601 |
última actualización |
La hora en que se actualizó por última vez el estado del método asíncrono, en formato UTC+0. |
cadena de fecha ISO 8601 |
Nota: El valor de retorno de GetAsyncResult es esencialmente una versión anidada de la respuesta JSON estándar con un campo de estado adicional.
Ejemplo de solicitud
Las solicitudes para este método son similares al siguiente ejemplo:
{
"method": "GetAsyncResult",
"params": {
"asyncHandle" : 389
},
"id" : 1
}
Ejemplo de respuesta: error de método
Este método devuelve una respuesta similar al siguiente ejemplo:
{
"error": {
"code": 500,
"message": "DBClient operation requested on a non-existent path at [/asyncresults/1]",
"name": "xDBNoSuchPath"
},
"id": 1
}
Si "response" fuera el objeto de respuesta JSON de la llamada a GetAsyncResult, entonces "response.error" correspondería a un error con el propio método GetAsyncResult (como consultar un asyncHandle inexistente).
Ejemplo de respuesta: error de tarea asíncrona
Este método devuelve una respuesta similar al siguiente ejemplo:
{
"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"
}
}
El “response.result.error” correspondería a un resultado de error de la llamada al método original.
Ejemplo de respuesta: éxito de la tarea asíncrona
Este método devuelve una respuesta similar al siguiente ejemplo:
{
"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"
}
}
El valor “response.result.result” es el valor devuelto por la llamada al método original si la llamada se completó correctamente.
Nueva versión
9,6