Prova i modelli Gemini 1.5, gli ultimi modelli multimodali di Vertex AI, e scopri cosa puoi creare con una finestra contestuale fino a 2 milioni di token.Prova i modelli Gemini 1.5, i più recenti modelli multimodali di Vertex AI, e scopri cosa puoi creare con una finestra contestuale fino a 2 milioni di token.
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 valori parametro diversi con la console Cloud o chiamando direttamente l'API Vertex AI.
Esegui il refactoring di questo codice JavaScript in modo che utilizzi asinc/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
async function fetchData(url) {
try {
const response = await new Promise((resolve, reject) => {
http.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
resolve(data);
});
}).on('error', reject);
});
return response;
} catch (error) {
throw error; // 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.