Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Janji boleh Digunakan untuk Mengendalikan Keputusan MySQL Asynchronous dalam Node.js?

Bagaimanakah Janji boleh Digunakan untuk Mengendalikan Keputusan MySQL Asynchronous dalam Node.js?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 03:43:03580semak imbas

How can Promises be Used to Handle Asynchronous MySQL Results in Node.js?

Gunakan Janji untuk Memproses Nilai Pulangan MySQL dalam Node.js

Sifat asynchronous Node.js menimbulkan cabaran bagi pembangun yang terbiasa dengan pengaturcaraan segerak. Ini boleh diilustrasikan dengan fungsi seperti getLastRecord yang mengambil data daripada fungsi MySQL.

Apabila cuba mengembalikan nilai daripada getLastRecord, pembangun mungkin menghadapi masalah disebabkan sifat async nod. Begini cara untuk menangani perkara ini menggunakan Promises:

<code class="javascript">function getLastRecord(name) {
  return new Promise((resolve, reject) => {
    const connection = getMySQL_connection();
    const query_str =
      "SELECT name, " +
      "FROM records " +   
      "WHERE (name = ?) " +
      "LIMIT 1 ";
    const query_var = [name];

    connection.query(query_str, query_var, (err, rows, fields) => {
      if (err) {
        return reject(err);
      }
      resolve(rows);
    });
  });
}</code>

Untuk mengendalikan nilai yang dikembalikan, anda boleh menggunakan kemudian dan menangkap panggilan balik:

<code class="javascript">getLastRecord('name_record').then(function(rows) {
  // Processing of rows goes here
}).catch((err) => { throw err; });</code>

Janji membolehkan anda mengelakkan sarang panggilan balik dan menambah baik kod kebolehbacaan. Ia menjadi amat berguna apabila digabungkan dengan Promise.all dan accumulator seperti Array.prototype.reduce.

Atas ialah kandungan terperinci Bagaimanakah Janji boleh Digunakan untuk Mengendalikan Keputusan MySQL Asynchronous 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