में setTimeout asynchronously का उपयोग कैसे करें, मैं node.js पर नया हूं, मैंने लंबे समय से कनेक्शन अनुकरण करने के लिए सेटटाइमआउट का उपयोग करने की कोशिश की और उम्मीद है कि यह असीमित रूप से कार्य करेगी।node.js
var http = require('http');
http.createServer(function (request, response) {
console.log('New request @ ' + request.url);
(function (response) {
setTimeout(function() {
console.log('Time is up');
response.writeHead(200, {"Content-Type": "text/plain"});
response.end('Hello World\n');
}, 3000);
})(response);
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');
लेकिन, उपरोक्त कोड एक सिंक्रोनस सिंगल थ्रेड ऐप की तरह प्रदर्शन करता है, जो केवल 3 सेकंड प्रति अनुरोध को संभाल सकता है।
मैंने सोचा कि node.js में सबकुछ अतुल्यकालिक कार्य करना चाहिए। तो, यहाँ क्या समस्या है?
मैंने अब के साथ परीक्षण किया है, और आप सही हैं, setTimeout एक async फ़ंक्शन है। लेकिन, अगर मैं क्रोम में एक ही समय में कई टैब खोलता हूं, तो यह थोड़ा अजीब बात है, यह 5 सेकंड अंतराल के बीच एक-एक करके समाप्त होता है। – Jack
मुझे लगता है कि आप क्रोम में टैब के बीच पर्याप्त तेज़ क्लिक नहीं कर रहे हैं .. :) – balazs
क्रोम एक ही यूआरएल के साथ एक साथ अनुरोध नहीं करेगा। यदि आप यूआरएल में भिन्नता जोड़ते हैं, उदा। पहला टैब अनुरोध करता है http://127.0.0.1:8124/0, दूसरे अनुरोध http://127.0.0.1:8124/1, आदि, तो उन्हें आपकी अपेक्षा की तरह व्यवहार करना चाहिए। Http://stackoverflow.com/questions/15852011/why-settimeout-blocks-eventloop देखें – Jason