2013-04-06 22 views
6

Not: Bu, yerleşim hakkında olanlar için çoğaltılan bir gönderi değil, burada anahtar yanıtı tarayıcı tasarım seçenekleri.nedenim blokları eventloop

ben başlıyorum çalışma node.js: sınamak için basit bir örnek zaman uyumsuz:

var http=require('http'); 

http.createServer(
    function(request, response){ 


     response.writeHead(200); 
     response.write("Hello, dog is running"); 
     setTimeout(
      function(){ 
       response.write("Dog is done"); 
       response.end(); 
      }, 
      10000 
     ); 

    } 
).listen(8080); 
console.log("Listen on port 8080") 

ilginç bir şey onun davranış Kıvrık zaman komut lind içinde differernt ve tarayıcıda geçerli: Ubuntu 12.10 yılında , Ben curl localhost kullanıyorum: 8080 iki konsolda, hemen hemen aynı 10 gönderimde yanıt veriyorlar. Bununla birlikte, iki tarayıcıyı açtım, isteği hemen hemen aynı anda yaparım, ancak tüm prosedür 20 saniye sürdü?

Teşekkürler.

+0

olası bir kopyası [Nodejs bir istek başka istekleri engeller] (http://stackoverflow.com/questions/12197064/nodejs-one-request-blocks-another-requests) –

+0

@MattBall, bunun bir çift. Bu CPU yoğun işlem yapmaz. Ayrıca, benim için CLI (curl) kullanarak doğru çalışıyor, ancak Firefox'ta çalışmıyor. – Dogbert

+0

Tarayıcı, ilk isteği sona erene kadar ikinci isteği göndermiyor gibi görünüyor. İşleyicinin başlangıcına bir günlük ifadesi eklerseniz, bunu gösterecektir. – Dogbert

cevap

19

O, tarayıcı bekleyen değil node.js

sunucuyu çalıştırın ve tarayıcı ikinci başlamadan önce aynı url ilk istek bekler çünkü 20 saniye sürer http://localhost:8080/ sekmeleri iki isteyin.

Sunucuyu çalıştırır ve iki sekmede http://localhost:8080/1 ve http://localhost:8080/2 talep ederseniz, 10 saniye sürer.

+0

Tarayıcının nasıl çalıştığı hakkında daha fazla bilgi verir misiniz? Aynı URL'yi neden aynı anda sekmelerle açamazlar? – Kuan

+2

Chrome, aynı URL'ye aynı anda istekte bulunmaz, bir uygulama seçimidir. – Mustafa