Prova i modelli Gemini 1.5, i più recenti modelli multimodali in Vertex AI, e scopri cosa puoi creare con una finestra contestuale fino a 2 milioni di token. di Gemini Advanced.
Prova i modelli Gemini 1.5, i più recenti modelli multimodali in Vertex AI, e scopri cosa puoi creare con una finestra contestuale fino a 2 milioni di token.
Sostituire le chiamate di callback con Async/Await
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Sostituisci i callback con asinc/await per migliorare la leggibilità e la gestione degli errori in JavaScript.
Puoi eseguire query direttamente su un modello e testare i risultati restituiti quando utilizzi
i diversi valori dei parametri con la console Cloud o chiamando il metodo
l'API Vertex AI in modo diretto.
Esegui il refactoring di questo codice JavaScript in modo da utilizzare async/await anziché i callback per la gestione delle operazioni asincrone. L'obiettivo è migliorare la leggibilità del codice e la gestione degli errori.
function fetchData(url, callback) {
http.get(url, function(response) {
let data = '';
response.on('data', (chunk) => {
data += chunk;
});
response.on('end', () => {
callback(null, data);
});
}).on('error', (err) => {
callback(err);
});
}
Risposta
asyncfunctionfetchData(url){try{constresponse=awaitnewPromise((resolve,reject)=>{http.get(url,(res)=>{letdata='';res.on('data',(chunk)=>{data+=chunk;});res.on('end',()=>{resolve(data);});}).on('error',reject);});returnresponse;}catch(error){throwerror;// Re-throw the error to be handled by the caller}}
Spiegazione:
Funzione async: definiamo la funzione fetchData come async, consentendoci di utilizzare await al suo interno.
Blocco try...catch: aggrega l'operazione asincrona in un blocco try...catch per gestire i potenziali errori.
Promise e await:
Creiamo un Promise che si risolve con i dati quando la risposta è stata ricevuta per intero.
Utilizziamo await per mettere in pausa l'esecuzione della funzione fino alla risoluzione di Promise.
Gestione degli errori:
Se si verifica un errore durante la richiesta http.get, viene richiamata la funzione reject di Promise, causando l'esecuzione del blocco catch.
Eseguiremo nuovamente l'errore utilizzando throw error per propagarlo al chiamante.
Valore restituito: la funzione fetchData restituisce i dati recuperati in caso di esito positivo.
Migliore leggibilità: il codice è più conciso e più facile da capire, in quanto il flusso asincrono è più esplicito.
Gestione gestione degli errori: il blocco try...catch fornisce un modo chiaro per gestire gli errori.
Niente callback: evitiamo i callback nidificati, rendendo il codice più gestibile.
Flusso di controllo migliore: l'esecuzione del codice è più prevedibile, poiché await mette in pausa la funzione fino al completamento dell'operazione asincrona.