首页 > 数据库 > 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 中,数据库调用等异步操作可能难以管理。一种方法是使用受 C# 启发的 async/await 语法。然而,这种语法对于 Node.js 新手来说可能有点陌生。

使用 Async/Await 同步 MySQL 结果

提供的代码演示了需要四个 MySQL 查询的情况串行执行,并将其结果附加到单个字符串。但是,由于代码同步运行,因此在附加最终字符串时,变量 string1 到 string4 保持为空。

为了解决这个问题,Node.js 版本 8 引入了 util.promisify(),它允许使用 Promises原生 Node.js 模块,例如 MySQL。以下是如何使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板