Bila hendak menggunakan panggilan balik dalam nodejs

WBOY
Lepaskan: 2023-05-28 12:10:08
asal
410 orang telah melayarinya

Node.js ialah platform yang sangat popular untuk membina aplikasi web yang pantas dan berskala. Sebagai teknologi dipacu peristiwa, Node.js melaksanakan operasi I/O tanpa sekatan dengan sangat baik melalui fungsi panggil balik. Walau bagaimanapun, kadangkala kita tertanya-tanya, bagaimana untuk memutuskan masa untuk menggunakan panggilan balik?

Dalam artikel ini, kita akan membincangkan panggilan balik dalam Node.js dan masa untuk menggunakan fungsi panggil balik.

Apakah panggilan balik itu?

Panggil balik ialah fungsi yang dilaksanakan selepas fungsi tak segerak selesai dengan jayanya. Ini bermakna apabila kita perlu melakukan operasi tak segerak, kita boleh menghantar fungsi panggil balik kepada operasi dan melaksanakannya selepas berjaya diselesaikan. Dengan cara ini, kami boleh mengendalikan operasi tak segerak tanpa menyekat proses tersebut.

Dalam Node.js, fungsi panggil balik selalunya digunakan bersama dengan gelung acara. Gelung peristiwa akan terus menunggu untuk fungsi panggil balik dicetuskan dan akan terus melaksanakan kod lain selepas fungsi panggil balik selesai.

Dalam situasi apakah panggilan balik digunakan?

Fungsi panggil balik sangat berguna dalam pengaturcaraan tak segerak. Berikut ialah beberapa situasi di mana panggilan balik digunakan:

  1. Operasi fail

Apabila membaca atau menulis fail, biasanya kita perlu melakukan operasi tak segerak. Pada masa ini, kami boleh menggunakan panggilan balik untuk mengendalikan operasi selepas pembacaan atau penulisan fail selesai. Contohnya, apabila menggunakan pustaka fs untuk operasi fail dalam Node.js, kod untuk membaca fail mungkin kelihatan seperti ini:

const fs = require('fs');
fs.readFile('/path/to/file', (err, data) => {
  if (err) throw err;
  console.log(data);
});
Salin selepas log masuk

Dalam contoh ini, kami menghantar fungsi panggil balik sebagai parameter. Apabila bacaan fail selesai, fungsi panggil balik akan dicetuskan dan kandungan fail akan dicetak.

  1. Operasi Pangkalan Data

Dalam Node.js, kita biasanya perlu berinteraksi dengan pangkalan data. Jika kita perlu membaca atau menulis data daripada pangkalan data, lebih baik menggunakan fungsi panggil balik. Contohnya, menanyakan pangkalan data MongoDB menggunakan fungsi panggil balik dalam Mongoose mungkin kelihatan seperti ini:

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
  const kittySchema = new mongoose.Schema({
    name: String
  });
  const Kitten = mongoose.model('Kitten', kittySchema);

  Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    console.log(kittens);
  });
});
Salin selepas log masuk

Dalam contoh ini, kami menggunakan fungsi panggil balik untuk menanyakan pangkalan data MongoDB. Selepas pertanyaan selesai, fungsi panggil balik dicetuskan dan hasil pertanyaan dicetak.

  1. Operasi Rangkaian

Node.js digunakan terutamanya untuk menulis aplikasi rangkaian, jadi kami selalunya perlu melakukan operasi rangkaian. Apabila kita perlu menghantar permintaan ke pelayan atau menerima data, sebaiknya gunakan fungsi panggil balik. Sebagai contoh, kod untuk membuat permintaan HTTP menggunakan modul http Node.js mungkin kelihatan seperti ini:

const http = require('http');

http.get('http://www.google.com/', (res) => {
  console.log(`Got response: ${res.statusCode}`);
  res.resume();
}).on('error', (e) => {
  console.log(`Got error: ${e.message}`);
});
Salin selepas log masuk

Dalam contoh ini, kami mengendalikan respons HTTP menggunakan fungsi panggil balik. Apabila kami menerima respons, fungsi panggil balik akan dicetuskan dan kod status respons akan dicetak.

Selain senario ini, terdapat banyak situasi di mana fungsi panggil balik boleh digunakan Contohnya, fungsi panggil balik sangat sesuai untuk digunakan dalam pemprosesan masa, pemprosesan baris gilir dan pengelogan.

Kebaikan dan keburukan panggilan balik

Fungsi panggil balik, sebagai satu bentuk pengaturcaraan tak segerak, sudah tentu mempunyai kelebihan dan kekurangan.

Kelebihan:

  1. Fungsi panggil balik meningkatkan kelajuan tindak balas program dan membolehkan kami mengendalikan lebih banyak perkara apabila mengendalikan sejumlah besar permintaan.
  2. Fungsi panggil balik boleh mengurangkan penggunaan memori kerana kita tidak perlu menunggu operasi menyekat selesai. Apabila fungsi panggil balik selesai, kita boleh mula memproses tugas seterusnya, sekali gus menjimatkan memori.
  3. Fungsi panggil balik boleh mengurangkan kerumitan kod kerana kami boleh mengendalikan berbilang operasi tak segerak serentak di dalam fungsi.

Kelemahan:

  1. Jika digunakan secara tidak betul, fungsi panggil balik boleh menjadikan kod sangat sukar untuk dikekalkan dan dibaca.
  2. Fungsi panggil balik boleh mencipta neraka panggil balik, menyebabkan sarang yang berlebihan dan memusnahkan kebolehbacaan kod.
  3. Fungsi panggil balik mungkin mengurangkan prestasi program kerana CPU perlu sentiasa menukar konteks apabila memproses operasi tak segerak.

Kesimpulan

Fungsi panggil balik ialah satu bentuk pengaturcaraan tak segerak dan digunakan secara meluas dalam Node.js. Penggunaan fungsi panggil balik yang paling penting adalah untuk mengendalikan nilai pulangan selepas operasi tak segerak selesai. Fungsi panggil balik boleh mengurangkan penggunaan kod dan memori dengan memproses berbilang operasi tak segerak serentak, dan boleh meningkatkan kelajuan tindak balas program. Walau bagaimanapun, menggunakan fungsi panggil balik yang tidak betul boleh membawa kepada kod yang rumit dan sukar untuk diselenggara, yang boleh mengurangkan prestasi program. Oleh itu, gunakan fungsi panggil balik dengan berhati-hati untuk mengoptimumkan kod anda dan meningkatkan kecekapan dan kebolehbacaan program anda.

Atas ialah kandungan terperinci Bila hendak menggunakan panggilan balik dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!