Asynchrone Ausführung in Node.js: Verwendung von Async/Await mit MySQL
Als Node.js-Neuling kann es zu Anpassungsschwierigkeiten kommen seine moderne Syntax, insbesondere bei der Arbeit mit asynchronen Operationen. Lassen Sie uns untersuchen, wie Sie die Schlüsselwörter async/await verwenden, um beim Abfragen einer MySQL-Datenbank synchronisierte Ergebnisse zu erzielen.
In Ihrem Code möchten Sie mehrere Abfragen ausführen und die Ergebnisse in einer einzigen Zeichenfolge verketten. Da Node.js jedoch JavaScript-Code nicht blockierend ausführt, garantiert der folgende Code nicht, dass die Variablen string1 bis string4 die erwarteten Ergebnisse enthalten:
// Original Code var string1 = ''; var string2 = ''; var string3 = ''; var string4 = ''; DatabasePool.getConnection((err, connection) => { // Query 1 connection.query(query, (err, result) => { string1 = result; }); // Query 2 connection.query(query, (err, result) => { string2 = result; }); // Query 3 connection.query(query, (err, result) => { string3 = result; }); // Query 4 connection.query(query, (err, result) => { string4 = result; }); // Attempt to concatenate results var appended_text = string1 + string2 + string3 + string4; });
Lösung mit Async/ Warten
Um dieses Problem zu beheben und eine synchrone Ausführung zu ermöglichen, stellt Node.js 8 die Funktion util.promisify() bereit. So integrieren Sie es in die MySQL-Bibliothek:
// Improved Code const mysql = require('mysql'); const util = require('util'); const conn = mysql.createConnection({ yourHOST, yourUSER, yourPW, yourDB }); // Promisify the query method const query = util.promisify(conn.query).bind(conn); (async () => { try { // Execute queries concurrently const [query1Result, query2Result, query3Result, query4Result] = await Promise.all([ query('select count(*) as count from file_managed'), query('another query'), query('another query'), query('another query'), ]); // Concatenate results const appended_text = query1Result[0].count + query2Result[0].count + query3Result[0].count + query4Result[0].count; } finally { // Close the connection conn.end(); } })();
In diesem überarbeiteten Code:
Dieser Ansatz ermöglicht es Ihnen Synchronisieren Sie Ihre Abfragen nahtlos und erhalten Sie die gewünschte Ausgabe auf zuverlässige Weise, was async/await zu einem leistungsstarken Tool für die Verarbeitung asynchroner Vorgänge macht Node.js.
Das obige ist der detaillierte Inhalt vonWie kann Async/Await Parallelitätsprobleme beim Abfragen von MySQL in Node.js lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!