Rumah  >  Artikel  >  hujung hadapan web  >  Apakah perbezaan antara penyegerakan nod dan asynchronousness?

Apakah perbezaan antara penyegerakan nod dan asynchronousness?

WBOY
WBOYasal
2022-04-19 17:25:472987semak imbas

Perbezaan antara penyegerakan nod dan asynchronous ialah: penyegerakan bermakna program berjalan dari atas ke bawah Langkah seterusnya hanya boleh dilaksanakan selepas langkah sebelumnya dilaksanakan bermakna anda tidak perlu menunggu di atas untuk menyelesaikan berjalan sebelum menjalankan Operasi berikut, pengaturcaraan tak segerak boleh dilaksanakan dengan bergantung pada panggilan balik, tetapi ini tidak bermakna program selepas panggilan balik adalah tak segerak.

Apakah perbezaan antara penyegerakan nod dan asynchronousness?

Persekitaran pengendalian tutorial ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.

Apakah perbezaan antara penyegerakan nod dan tak segerak

Penyegerakan bermaksud program berjalan dari atas ke bawah, manakala tak segerak bermakna anda tidak perlu menunggu? supaya perkara di atas selesai dijalankan sebelum menjalankan operasi berikut. Pengaturcaraan tak segerak bergantung pada panggilan balik, tetapi tidak boleh dikatakan bahawa program menjadi tak segerak selepas menggunakan panggilan balik.

Bahasa Inggeris Segerak: penyegerakan (penyegerakan)

Bahasa Inggeris Tak Segerak: tak segerak (tak segerak)

API Segerak: Hanya selepas pelaksanaan API semasa selesai, pelaksanaan boleh diteruskan API Seterusnya

console.log('before'); 
console.log('after');

API Asynchronous: Pelaksanaan API semasa tidak akan menyekat pelaksanaan kod berikutnya

console.log('before');
setTimeout(
   () => { console.log('last');
}, 2000);
console.log('after');

API segerak, asynchronous Perbezaan API (mendapatkan nilai pulangan)

API segerak boleh mendapatkan hasil pelaksanaan API daripada nilai pulangan, tetapi API tak segerak tidak boleh (nampaknya menulis pulangan dalam API tak segerak tidak boleh mendapatkan hasilnya?)

// 异步
  function getMsg () { 
      setTimeout(function () { 
          return { msg: 'Hello Node.js' }
      }, 2000);
  }
  const msg = getMsg (); //函数没有写return 默认是返回 undefined
cnsole.log(msg); // 输出的是 undefined,因为定时器还没执行完就执行了输出

Fungsi panggil balik

Tentukan fungsi anda sendiri dan biarkan orang lain memanggilnya.

// getData函数定义
 function getData (callback) {}
  // getData函数调用
 getData (() => {});
/*例子------------------*/
function getMsg (callback) {
    setTimeout(function () {
        callback ({ msg: 'Hello Node.js' })
    }, 2000);
}
getMsg (function (msg) { 
    console.log(msg);
});

Perbezaan antara API segerak dan API tak segerak (urutan pelaksanaan kod)

API segerak dilaksanakan secara berurutan dari atas ke bawah pelaksanaan kod berikut.

API Asynchronous tidak akan menunggu pelaksanaan API selesai sebelum melaksanakan kod

Analisis jujukan pelaksanaan kod

JavaScript dibahagikan kepada kawasan pelaksanaan kod segerak dan kawasan pelaksanaan kod tak segerak Terdapat sambungan baris gilir fungsi panggil balik di antara mereka. Mula-mula, JavaScript akan melaksanakan semua kandungan kawasan kod segerak, dan kemudian pergi ke kawasan kod tak segerak untuk melaksanakan kod, cari blok kod yang telah dilaksanakan dalam kawasan kod tak segerak, dan segera cari fungsi panggil balik yang sepadan dengan blok kod tak segerak dan letakkannya dalam kawasan pelaksanaan kod segerak Untuk melaksanakan API tak segerak

dalam Node.js untuk membaca API fail, terdapat fungsi panggil balik.

API mendengar acara juga mempunyai fungsi panggil balik. (Fungsi pemprosesan acara ialah fungsi panggil balik dan API mendengar acara ialah API tak segerak)

Jika pelaksanaan kod di belakang API tak segerak bergantung pada hasil pelaksanaan API tak segerak semasa, tetapi sebenarnya API tak segerak tidak kembali apabila kod berikutnya dilaksanakan Akibatnya, bagaimana untuk menyelesaikan masalah ini?

Sebagai contoh, terdapat keperluan: baca fail A, fail B, dan fail C dalam urutan (baca A, kemudian baca B, kemudian baca C, ia tidak boleh dibaca pada masa yang sama)

Jika keperluan di atas direalisasikan, maka Ia akan menyebabkan operasi bacaan B diletakkan dalam fungsi panggil balik A, dan operasi bacaan C diletakkan dalam fungsi panggil balik B, mengakibatkan banyak peringkat bersarang (panggil balik neraka)

Pembelajaran yang disyorkan : "

tutorial video nodejs
const fs = require('fs');
fs.readFile('./1.txt', 'utf8', (err, result1) => {
console.log(result1)
fs.readFile('./2.txt', 'utf8', (err, result2) => {
console.log(result2)
fs.readFile('./3.txt', 'utf8', (err, result3) => {
console.log(result3)
})
})
});
"

Atas ialah kandungan terperinci Apakah perbezaan antara penyegerakan nod dan asynchronousness?. 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