Rumah >pangkalan data >tutorial mysql >Bagaimanakah Async/Await dan util.promisify() Boleh Menyelesaikan Isu Pertanyaan MySQL Bersiri dalam Node.js?

Bagaimanakah Async/Await dan util.promisify() Boleh Menyelesaikan Isu Pertanyaan MySQL Bersiri dalam Node.js?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 08:22:14558semak imbas

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

Async/Await dengan MySQL dalam Node.js

Dalam Node.js, operasi tak segerak seperti panggilan pangkalan data boleh menjadi mencabar untuk diuruskan. Satu pendekatan ialah menggunakan sintaks async/menunggu, diilhamkan oleh C#. Walau bagaimanapun, sintaks ini mungkin kelihatan asing bagi pemula Node.js.

Menggunakan Async/Await for Synchronized MySQL Results

Kod yang disediakan menunjukkan situasi di mana empat pertanyaan MySQL memerlukan untuk dilaksanakan secara bersiri, dan keputusannya dilampirkan pada rentetan tunggal. Walau bagaimanapun, kerana kod berjalan serentak, pembolehubah string1 hingga string4 kekal kosong apabila rentetan akhir dilampirkan.

Untuk menangani perkara ini, Node.js versi 8 memperkenalkan util.promisify() yang membolehkan penggunaan janji dengan modul Node.js asli seperti MySQL. Begini cara anda boleh mencapai tingkah laku yang anda inginkan menggunakan async/await dan 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();
  }
})();

Kod yang disemak ini menggunakan async/wait untuk melaksanakan pertanyaan secara selari, memastikan bahawa keputusan diambil secara serentak, dan menyimpannya dalam tatasusunan. Tatasusunan kemudiannya digunakan untuk menggabungkan hasil ke dalam rentetan yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah Async/Await dan util.promisify() Boleh Menyelesaikan Isu Pertanyaan MySQL Bersiri dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn