Maison >base de données >tutoriel mysql >Comment Async/Await peut-il synchroniser les résultats des requêtes MySQL Node.js ?

Comment Async/Await peut-il synchroniser les résultats des requêtes MySQL Node.js ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 05:58:13234parcourir

How Can Async/Await Synchronize Node.js MySQL Query Results?

Synchronisation des résultats Node.js avec Async/Await pour MySQL

Dans Node.js, la gestion des opérations asynchrones peut être difficile, surtout lorsque vous devez synchroniser les résultats avant de continuer. L'utilisation des mots-clés async/await est une approche pratique pour y parvenir.

Dans l'extrait de code fourni, vous souhaitez récupérer les résultats de quatre requêtes distinctes et les ajouter à une chaîne concaténée. Cependant, l'approche conventionnelle basée sur le rappel pose un défi car les variables restent vides puisque le code situé sous les requêtes s'exécute en premier.

Pour surmonter ce problème, la version 8 de Node.js introduit la fonction native util.promisify() . Cette fonction vous permet de convertir des fonctions basées sur des rappels en fonctions basées sur des promesses. En tirant parti de util.promisify() et du module node mysql, vous pouvez écrire le code suivant :

// Import required modules
const mysql = require('mysql');
const util = require('util');

// Create a MySQL connection
const conn = mysql.createConnection({/* connection parameters */});

// Promisify the query method using util.promisify().
// Remember to use .bind() to maintain the correct this context.
const query = util.promisify(conn.query).bind(conn);

// Execute queries concurrently using async/await
const main = async () => {
  try {
    const rows1 = await query(/* query string */);
    const rows2 = await query(/* query string */);
    const rows3 = await query(/* query string */);
    const rows4 = await query(/* query string */);

    // Append the results to a single string
    let appendedText = `${rows1} ${rows2} ${rows3} ${rows4}`;

    // Use the appendedText as needed
  } catch (err) {
    // Handle errors
  } finally {
    // Close the connection
    conn.end();
  }
};

// Start the process
main();

Ce code exécutera les requêtes simultanément et attendra que les résultats soient disponibles avant de continuer. Les lignes de chaque requête seront ajoutées à la chaîne appendedText, que vous pourrez ensuite utiliser pour un traitement ultérieur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn