GetAsyncResult
È possibile utilizzare GetAsyncResult per recuperare il risultato delle chiamate asincrone ai metodi. Alcune chiamate ai metodi richiedono un certo tempo per essere eseguite e potrebbero non essere completate quando il sistema invia la risposta iniziale. Per ottenere lo stato o il risultato della chiamata al metodo, utilizzare GetAsyncResult Per eseguire il polling del valore asyncHandle restituito dal metodo.
GetAsyncResult restituisce lo stato generale dell'operazione (in corso, completata o errore) in modo standard, ma i dati effettivi restituiti per l'operazione dipendono dalla chiamata al metodo originale e i dati restituiti sono documentati con ciascun metodo.
Se il parametro keepResult è mancante o falso, asyncHandle diventa inattivo quando viene restituito il risultato e in seguito tenta di eseguire una query su asyncHandle restituisce un errore. È possibile mantenere attivo asyncHandle per le query future impostando il parametro keepResult su true.
Parametri
Questo metodo ha i seguenti parametri di input:
| Nome | Descrizione | Tipo | Valore predefinito | Obbligatorio |
|---|---|---|---|---|
AsyncHandle |
Valore restituito dalla chiamata al metodo asincrono originale. |
intero |
Nessuno |
Sì |
KeepResult |
Se true, GetAsyncResult non rimuove il risultato asincrono al momento della restituzione, abilitando le query future a quell'asyncHandle. |
booleano |
falso |
No |
Valori restituiti
Questo metodo ha i seguenti valori restituiti:
| Nome | Descrizione | Tipo |
|---|---|---|
stato |
Stato della chiamata asincrona al metodo. Valori possibili:
|
stringa |
risultato |
Se il metodo asincrono viene completato correttamente, questo è il risultato dell'operazione asincrona. Se l'operazione asincrona non riesce, questo membro non è presente. |
stringa |
errore |
Se lo stato è completo e il metodo asincrono non è riuscito, questo membro include i dettagli dell'errore. Se l'operazione asincrona ha avuto esito negativo, questo membro non è presente. |
stringa |
ResultType |
Il tipo di operazione che la chiamata asincrona al metodo sta eseguendo o stava eseguendo. |
stringa |
dettagli |
Se lo stato è in esecuzione, questo membro include informazioni relative all'operazione corrente del metodo. Se il metodo asincrono non è in esecuzione, questo membro non è presente. |
Oggetto JSON |
CreateTime |
L'ora in cui è stato chiamato il metodo asincrono, in formato UTC+0. |
Stringa di dati ISO 8601 |
LastUpdateTime |
L'ora dell'ultimo aggiornamento dello stato del metodo asincrono, in formato UTC+0. |
Stringa di dati ISO 8601 |
Nota: il valore restituito di GetAsyncResult è essenzialmente una versione nidificata della risposta JSON standard con un campo di stato aggiuntivo.
Esempio di richiesta
Le richieste per questo metodo sono simili all'esempio seguente:
{
"method": "GetAsyncResult",
"params": {
"asyncHandle" : 389
},
"id" : 1
}
Esempio di risposta: Errore di metodo
Questo metodo restituisce una risposta simile all'esempio seguente:
{
"error": {
"code": 500,
"message": "DBClient operation requested on a non-existent path at [/asyncresults/1]",
"name": "xDBNoSuchPath"
},
"id": 1
}
Se "Response" fosse l'oggetto di risposta JSON dalla chiamata GetAsyncResult, "Response.error" corrisponderebbe a un errore con il metodo GetAsyncResult stesso (ad esempio, l'esecuzione di query su un'asyncHandle non esistente).
Esempio di risposta: Errore di task asincrono
Questo metodo restituisce una risposta simile all'esempio seguente:
{
"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"
}
}
“respusse.Result.error” corrisponde a un risultato di errore della chiamata al metodo originale.
Esempio di risposta: Operazione asincrona riuscita
Questo metodo restituisce una risposta simile all'esempio seguente:
{
"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"
}
}
“respusse.Result.Result” è il valore restituito per la chiamata al metodo originale se la chiamata è stata completata correttamente.
Novità dalla versione
9,6