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