SORU
26 ŞUBAT 2011, CUMARTESİ


düğümü.' konsol js.zaman uyumsuz günlük?

Konsol./debug/node.js /hata asynchrounous uyarmak günlük? Ben bunlarla ekranda yazdırılır kadar kod yürütme durdurma javascript anlamına veya daha sonraki bir aşamada yazdırır?

Ayrıca, eğer bir konsol için mümkün olup olmadığını bilmek ilgileniyorum.düğüm çöker sonra deyimi hemen her şeyi görüntülemek için oturum açın.

CEVAP
26 ŞUBAT 2011, CUMARTESİ


Güncelleme:Düğüm 0.6 ile başlayan bu yazı stdout beri kullanılmıyorsenkronşimdi.

İyi hadi console.log aslında ne yaptığını görmek.

Öncelikle console module bir parçası

exports.log = function() {
  process.stdout.write(format.apply(this, arguments)   '\n');
};

Sadece bazı biçimlendirme yapar ve process.stdout, hiçbir zaman uyumsuz şimdiye kadar yazıyor.

process.stdout alıcı tembel başlatılan, bazı yorumlar şeyleri açıklamak için ekledim: defined on startup

.... code here...
process.__defineGetter__('stdout', function() {
  if (stdout) return stdout;                            // only initialize it once 

  /// many requires here ...

  if (binding.isatty(fd)) {                             // a terminal? great!
    stdout = new tty.WriteStream(fd);
  } else if (binding.isStdoutBlocking()) {              // a file?
    stdout = new fs.WriteStream(null, {fd: fd});
  } else {
    stdout = new net.Stream(fd);                        // a stream? 
                                                        // For example: node foo.js > out.txt
    stdout.readable = false;
  }

  return stdout;
});

TTY ve UNIX halinde here, Bu şey soketten alır geliriz. Düğüm çağrısının yapan tüm Soket üzerinde veri göndermek için ise, o zaman terminal gerisini halleder.

Bir test edelim!

var data = '111111111111111111111111111111111111111111111111111';
for(var i = 0, l = 12; i < l; i  ) {
    data  = data; // warning! gets very large, very quick
}

var start = Date.now();
console.log(data);
console.log('wrote %d bytes in %dms', data.length, Date.now() - start);

Sonuç

....a lot of ones....1111111111111111
wrote 208896 bytes in 17ms

real    0m0.969s
user    0m0.068s
sys  0m0.012s

Terminal yaklaşık 1 saniye yuva içeriği yazdırmak gerekiyor, ama düğüm sadece terminaline veri göndermek için 17 milisaniye ihtiyacı var.

Aynı akış dava için de geçerli, ve ayrıca dosya kılıf asynchronous ele alır.

Bu yüzdenEvetNode.js engellenmeyen verdiği sözleri geçerlidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • Madeon

    Madeon

    31 Ocak 2010
  • Mr. H

    Mr. H

    1 Temmuz 2012