Heim >Datenbank >MySQL-Tutorial >Wie können Async/Await und util.promisify() serielle MySQL-Abfrageprobleme in Node.js lösen?
Asynchron/Warten mit MySQL in Node.js
In Node.js kann die Verwaltung asynchroner Vorgänge wie Datenbankaufrufe schwierig sein. Ein Ansatz besteht darin, die von C# inspirierte async/await-Syntax zu verwenden. Allerdings mag diese Syntax für Node.js-Neulinge ungewohnt erscheinen.
Verwendung von Async/Warten auf synchronisierte MySQL-Ergebnisse
Der bereitgestellte Code zeigt eine Situation, in der vier MySQL-Abfragen erforderlich sind seriell ausgeführt werden und ihre Ergebnisse an eine einzelne Zeichenfolge angehängt werden. Da der Code jedoch synchron ausgeführt wird, bleiben die Variablen string1 bis string4 leer, wenn die endgültige Zeichenfolge angehängt wird.
Um dieses Problem zu beheben, wurde in Node.js Version 8 util.promisify() eingeführt, das die Verwendung von Versprechen mit ermöglicht native Node.js-Module wie MySQL. So können Sie Ihr gewünschtes Verhalten mit async/await und util.promisify() erreichen:
const mysql = require('mysql'); const util = require('util'); const conn = mysql.createConnection({ // your database connection parameters }); // promisify the query method const query = util.promisify(conn.query).bind(conn); (async () => { try { // execute the queries asynchronously const [rows1, rows2, rows3, rows4] = await Promise.all([ query('query1'), query('query2'), query('query3'), query('query4'), ]); // append the results to a single string const appendedText = rows1 + rows2 + rows3 + rows4; // do something with the appended text } catch (err) { // handle any errors } finally { // close the database connection conn.end(); } })();
Dieser überarbeitete Code verwendet async/await, um die Abfragen parallel auszuführen und sicherzustellen, dass die Ergebnisse synchron abgerufen werden. und speichert sie in einem Array. Das Array wird dann verwendet, um die Ergebnisse in der gewünschten Zeichenfolge zu verketten.
Das obige ist der detaillierte Inhalt vonWie können Async/Await und util.promisify() serielle MySQL-Abfrageprobleme in Node.js lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!