Rumah  >  Artikel  >  hujung hadapan web  >  Contoh penggunaan Process.nextTick dalam Node.js_node.js

Contoh penggunaan Process.nextTick dalam Node.js_node.js

WBOY
WBOYasal
2016-05-16 15:52:581279semak imbas

Saya tidak ingat di mana saya mula-mula melihat panggilan untuk memproses.nextTick Oh, saya sepatutnya melihatnya dalam dokumen proses nodejs rasmi. Pada masa itu, saya tidak faham untuk apa perkara ini. Kami sudah mempunyai setTimeout, jadi mengapa kami memerlukan fungsi ini? Dan secara asasnya, apakah fungsi ini? Apakah perbezaan antara setTimeout dan setTimeout?

Terdapat siaran yang sangat baik pada stackoverflow yang pada asasnya menerangkan masalah saya Di sini saya lampirkan pautan dan memberikan contoh di dalamnya:

stackoverflow.com >> Apakah kes penggunaan yang sesuai untuk process.nextTick dalam Node.js?

var MyConstructor = function() {
 ...
 process.nextTick(function() {
  self._continue();
 });
};
 
MyConstructor.prototype.__proto__ = EventEmitter.prototype;
 
MyConstructor.prototype._continue = function() {
 // without the process.nextTick
 // these events would be emitted immediately
 // with no listeners. they would be lost.
 this.emit('data', 'hello');
 this.emit('data', 'world');
 this.emit('end');
};
 
function(req, res, next) {
 var c = new MyConstructor(...);
 c.on('data', function(data) {
  console.log(data);
 });
 c.on('end', next);
}

Ringkasnya, kerana model tak segerak, sesetengah kod mungkin dilaksanakan sebelum syarat yang mereka perlukan dilengkapkan, jadi letakkan kod ini yang memerlukan prasyarat ke dalam fungsi panggil balik, kemudian letakkan Pergi ke bahagian atas acara seterusnya gelung. Kemudian kod ini tidak akan dilaksanakan serta-merta, tetapi akan menunggu sebelum pusingan acara seterusnya dimulakan, dan akan dilaksanakan selepas bermula.

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