Rumah  >  Artikel  >  hujung hadapan web  >  Cara memanggil fungsi selepas permintaan nodejs tamat

Cara memanggil fungsi selepas permintaan nodejs tamat

PHPz
PHPzasal
2023-04-05 13:48:22457semak imbas

Dalam pembangunan Node.js, kita selalunya perlu memanggil fungsi panggil balik apabila membuat permintaan tak segerak Fungsi panggil balik ini bertanggungjawab untuk melaksanakan beberapa operasi selepas permintaan tamat. Modul http yang disediakan oleh Node.js ialah modul yang biasa digunakan untuk memulakan permintaan http Ia boleh digunakan untuk permintaan http klien atau pelayan.

Dalam modul http, kami biasanya menggunakan kaedah http.get() atau http.request() untuk memulakan permintaan http. Kedua-dua kaedah adalah tidak segerak kerana mereka menunggu permintaan untuk diselesaikan sebelum kembali. Jadi bagaimana anda memanggil fungsi panggil balik selepas permintaan tamat?

Kaedah 1: Lulus fungsi panggil balik sebagai parameter

Dalam kaedah http.get() dan kaedah http.request(), kedua-duanya menerima pilihan parameter, yang boleh mengandungi panggilan balik fungsi. Fungsi panggil balik ini ialah fungsi yang akan dilaksanakan selepas permintaan selesai.

Sebagai contoh, kita boleh menggunakan kaedah http.get() untuk mendapatkan kandungan halaman web dan mengeluarkan kandungan ke konsol selepas permintaan selesai:

const http = require('http');

http.get('http://www.example.com', (res) => {
  let data = '';

  // 接收响应数据
  res.on('data', (chunk) => {
    data += chunk;
  });

  // 响应结束时输出结果
  res.on('end', () => {
    console.log(data);
  });
});

Dalam contoh ini , kami menghantar permintaan GET melalui kaedah http.get() untuk mendapatkan kandungan halaman web http://www.example.com. Kemudian kami menggabungkan data respons yang diterima dan mengeluarkannya ke konsol dengan mentakrifkan fungsi tanpa nama sebagai fungsi panggil balik.

Kaedah 2: Gunakan objek Promise

Selain menghantar fungsi panggil balik sebagai parameter, kami juga boleh menggunakan objek Promise untuk mengendalikan operasi selepas permintaan tamat. Objek Promise ialah ciri baharu dalam ES6, yang digunakan secara meluas dalam kaedah tak segerak Node.js.

Dalam modul http, kita boleh mengembalikan objek Promise dengan memanggil kaedah http.get() atau http.request(). Dalam objek Promise ini, kita boleh menggunakan kaedah then() untuk menetapkan fungsi yang akan dilaksanakan selepas permintaan tamat. Sebagai contoh, kita boleh menggunakan objek Promise untuk mendapatkan kandungan halaman web dan mengeluarkan kandungan ke konsol selepas permintaan selesai:

const http = require('http');

const getRequest = (url) => {
  return new Promise((resolve, reject) => {
    http.get(url, (res) => {
      let data = '';

      // 接收响应数据
      res.on('data', (chunk) => {
        data += chunk;
      });

      // 响应结束时输出结果
      res.on('end', () => {
        resolve(data);
      });
    }).on('error', (err) => {
      reject(err);
    });
  });
};

getRequest('http://www.example.com')
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.error(err);
  });

Dalam contoh ini, kami menggunakan kaedah yang dipanggil getRequest( ) Berfungsi untuk mengembalikan objek Promise. Kami membungkus kaedah http.get() dalam objek Promise dan menghantar data tindak balas kepada kaedah then() melalui fungsi resolve() pada penghujung permintaan. Jika ralat berlaku, maklumat ralat dihantar ke kaedah catch() melalui fungsi reject(). Kemudian kami mengeluarkan data respons dengan memanggil kaedah getRequest() dan mentakrifkan kaedah then() dalam objek Promise yang dikembalikan.

Ringkasan

Di atas ialah dua kaedah untuk memulakan permintaan http dalam Node.js dan fungsi panggilan selepas permintaan selesai. Dengan menghantar fungsi panggil balik sebagai parameter atau menggunakan objek Promise, kami boleh melakukan tindakan tersuai selepas permintaan tamat. Dalam pembangunan sebenar, kita boleh memilih kaedah yang sesuai untuk mengendalikan permintaan tak segerak mengikut situasi tertentu.

Atas ialah kandungan terperinci Cara memanggil fungsi selepas permintaan nodejs tamat. 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