2013-04-06 7 views
6

नोट: यह सेटटाइम के बारे में उन लोगों के लिए एक प्रतिकृति पोस्ट नहीं है, यहां मुख्य उत्तर ब्राउज़र डिज़ाइन विकल्प है।क्यों सेटटाइमआउट ब्लॉक इवेंटलोप

मैं शुरू कर रहा हूँ अध्ययन Node.js: परीक्षण करने के लिए एक सरल उदाहरण async:

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") 

एक दिलचस्प बात यह है कि अपने व्यवहार को कर्ल के साथ जब आदेश Lind में differernt है और ब्राउज़र में है: उबंटू 12.10 में, मैं कर्ल लोकलहोस्ट का उपयोग करता हूं: 8080 दो कंसोल में, वे लगभग 10 भेजते हैं।

हालांकि, मैं दो ब्राउज़रों को खोलता हूं, अनुरोध लगभग एक ही समय में करता हूं, लेकिन पूरी प्रक्रिया ने मुझे 20 सेकंड का समय दिया?

धन्यवाद।

+0

संभावित डुप्लिकेट [नोडजेस एक अनुरोध अन्य अनुरोधों को अवरुद्ध करता है] (http://stackoverflow.com/questions/12197064/nodejs-one-request-blocks-another-requests) –

+0

@ मैटबॉल, मुझे नहीं लगता कि यह एक है नकल। यह सीपीयू गहन प्रसंस्करण नहीं करता है। साथ ही, यह मेरे लिए सीएलआई (कर्ल) का उपयोग करके सही ढंग से काम करता है, लेकिन फ़ायरफ़ॉक्स में नहीं। – Dogbert

+0

ऐसा लगता है कि ब्राउजर दूसरे अनुरोध को पहले एक सिरे तक नहीं भेज रहा है। यदि आप हैंडलर की शुरुआत में लॉग स्टेटमेंट जोड़ते हैं, तो यह इसका प्रदर्शन करेगा। – Dogbert

उत्तर

19

यह ब्राउज़र प्रतीक्षा नहीं Node.js

आप सर्वर चलाने के लिए और का अनुरोध दो टैब में http://localhost:8080/ यह 20 सेकंड लेता है क्योंकि ब्राउज़र दूसरा शुरू करने से पहले एक ही यूआरएल के लिए पहला अनुरोध के लिए इंतजार कर रहा है है।

यदि आप सर्वर चलाते हैं और दो टैब में http://localhost:8080/1 और http://localhost:8080/2 का अनुरोध करते हैं तो इसमें 10 सेकंड लगते हैं।

+0

क्या आप ब्राउज़र के काम के बारे में मुझे और बता सकते हैं? वे एक ही समय में टैब के साथ एक ही यूआरएल क्यों नहीं खोल सकते हैं? – Kuan

+2

क्रोम एक ही यूआरएल के साथ-साथ किसी भी अनुरोध को जारी नहीं करता है, यह एक कार्यान्वयन विकल्प है। – Mustafa

संबंधित मुद्दे