Prova i modelli Gemini 1.5, i nostri più recenti modelli multimodali di Vertex AI, e scopri cosa puoi creare con una finestra di contesto dei token da 1 milione.Prova i modelli Gemini 1.5, i nostri più recenti modelli multimodali di Vertex AI, e scopri cosa puoi creare con una finestra di contesto dei token da 1 milione.
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 da utilizzare le chiamate asincrone/attese anziché callback per gestire le 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:l'operazione asincrona viene eseguita 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 viene 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, determinando l'esecuzione del blocco catch.
Eseguiamo di nuovo l'errore utilizzando throw error per propagarlo al chiamante.
Valore restituito: la funzione fetchData restituisce i dati recuperati in caso di esito positivo.
Vantaggi dell'utilizzo della modalità asincrona/in attesa:
Maggiore leggibilità: il codice è più conciso e più facile da comprendere, poiché il flusso asincrono è più esplicito.
Gestione gestione degli errori: il blocco try...catch fornisce un modo chiaro per gestire gli errori.
Non devi preoccuparti dei callback: evitiamo i callback nidificati rendendo il codice più gestibile.
Migliore flusso di controllo: l'esecuzione del codice è più prevedibile, in quanto await mette in pausa la funzione fino al completamento dell'operazione asincrona.