Node.js での MySQL との非同期/待機
Node.js では、データベース呼び出しなどの非同期操作の管理が困難な場合があります。 1 つのアプローチは、C# からインスピレーションを得た async/await 構文を使用することです。ただし、この構文は Node.js の初心者には馴染みがないように思えるかもしれません。
同期された MySQL 結果に Async/Await を使用する
提供されたコードは、4 つの MySQL クエリが必要な状況を示しています。シリアルに実行され、その結果が単一の文字列に追加されます。ただし、コードは同期的に実行されるため、最後の文字列が追加されるとき、変数 string1 から string4 は空のままです。
これに対処するために、Node.js バージョン 8 では util.promisify() が導入され、これにより、promise の使用が可能になります。 MySQL のようなネイティブ Node.js モジュール。 async/await と util.promisify() を使用して目的の動作を実現する方法は次のとおりです。
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(); } })();
この改訂されたコードは、async/await を使用してクエリを並列実行し、結果が同期的に取得されるようにします。そしてそれらを配列に格納します。次に、配列を使用して結果を目的の文字列に連結します。
以上がAsync/Await と util.promisify() は Node.js のシリアル MySQL クエリの問題をどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。