को समझने में मुझे यह समझने में समस्या हो रही है कि process.nextTick
इसकी बात कैसे करता है। मैंने सोचा था कि मैं समझ गया, लेकिन मैं दोहराने के लिए मैं कैसा महसूस इस काम करना चाहिए नहीं कर पा रहे:node.js इवेंट कतार और process.nextTick
var handler = function(req, res) {
res.writeHead(200, {'Content-type' : 'text/html'});
foo(function() {
console.log("bar");
});
console.log("received");
res.end("Hello, world!");
}
function foo(callback) {
var i = 0;
while(i<1000000000) i++;
process.nextTick(callback);
}
require('http').createServer(handler).listen(3000);
जबकि foo
पाशन है, मैं कई अनुरोध के ऊपर भेज देंगे, यह सोचते हैं कि handler
foo
के पीछे कई बार पंक्ति में लग जाएँगे callback
केवल foo
समाप्त होने पर ही लगाया जा रहा है।
यदि मैं यह कैसे काम करता है के बारे में सही कर रहा हूँ, मुझे लगता है परिणाम इस तरह दिखेगा:
received
received
received
received
bar
bar
bar
bar
लेकिन यह नहीं है, यह सिर्फ अनुक्रमिक है:
received
bar
received
bar
received
bar
received
bar
मुझे लगता है कि देख foo
callback
निष्पादित करने से पहले लौट रहा है, लेकिन ऐसा लगता है कि callback
कतार के अंत में, आने वाले सभी अनुरोधों के पीछे लाइन में अगला है। क्या यह काम करता है? शायद मैं समझ नहीं पा रहा हूं कि नोड में इवेंट कतार वास्तव में कैसे काम करता है। और कृपया मुझे here इंगित न करें। धन्यवाद।
नहीं, 'setTimeout' वैसे ही व्यवहार करता है। मुझे लगता है कि मैं वास्तव में पूछ रहा हूं कि पिछले अनुरोध समाप्त होने से पहले मुझे http अनुरोधों को प्रोसेस करना शुरू करना है। – alf
दरअसल, मुझे एहसास हुआ कि 'सेटटाइमआउट' वही करता है जो मैं खोज रहा था, इसलिए मैं क्षमा चाहता हूं। लेकिन सीपीयू गहन कार्यों और http प्रसंस्करण के अंतःस्थापित होने की अनुमति नहीं देने के लिए 'process.nextTick' वास्तव में क्या है? – alf
"टिक के अंत में नहीं" - तो, क्या ईवेंट कतार के अंत में मनमाने ढंग से कार्य करने का कोई तरीका है? क्या 'सेटटाइमआउट (एफएन, 0)' एक अनुशंसित तरीका है या सिर्फ एक कामकाज है? – incarnate