ホームページ > データベース > mysql チュートリアル > Async/Await と util.promisify() は Node.js のシリアル MySQL クエリの問題をどのように解決できますか?

Async/Await と util.promisify() は Node.js のシリアル MySQL クエリの問題をどのように解決できますか?

Mary-Kate Olsen
リリース: 2024-12-03 08:22:14
オリジナル
547 人が閲覧しました

How Can Async/Await and util.promisify() Solve Serial MySQL Query Issues in Node.js?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート