सबसे पहले, मैं समझने की कोशिश कर रहा हूं कि नोड क्या है। जे। मेरे पास दो प्रश्न हैं।
Node.js में सिंगल थ्रेडेड और इवेंट लूप
प्रथम प्रश्न
फेलिक्स की the article से, यह कहा कि "वहाँ केवल एक कॉलबैक एक ही समय में फायरिंग हो सकता है। जब तक कि कॉलबैक का निष्पादन पूरा होने, अन्य सभी कॉलबैक लाइन में इंतजार करना"।
- पहले http अनुरोध घटना प्राप्त किया:
फिर, निम्नलिखित कोड (आधिकारिक वेबसाइट NodeJS से नकल)
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8124, "127.0.0.1");
दो ग्राहक अनुरोधों को एक साथ प्राप्त कर रहे हैं, तो निम्न कार्यप्रवाह का मतलब है के बारे में विचार करें , दूसरा अनुरोध कार्यक्रम प्राप्त हुआ।
- जैसे ही पहली घटना प्राप्त हुई, पहली घटना के लिए कॉलबैक फ़ंक्शन निष्पादित हो रहा है।
- जबकि, दूसरी घटना के लिए कॉलबैक फ़ंक्शन का इंतजार करना होगा।
क्या मैं सही हूँ? यदि मैं सही हूं, तो Node.js नियंत्रण अगर बहुत कम समय अवधि के भीतर हजारों ग्राहक अनुरोध हैं।
दूसरा प्रश्न
अवधि "घटना लूप" ज्यादातर Node.js विषय में प्रयोग किया जाता है। मैंने http://www.wisegeek.com/what-is-an-event-loop.htm से निम्नलिखित के रूप में "इवेंट लूप" समझा है;
एक ईवेंट लूप - या मुख्य पाश, प्रोग्राम के भीतर एक निर्माण है जो प्रारंभिक ईवेंट के बाद ईवेंट को नियंत्रित और प्रेषित करता है।
प्रारंभिक घटना एक कुंजीपटल पर एक बटन धक्का या (Node.js में एक कार्यक्रम पर एक बटन क्लिक सहित कुछ भी, हो सकता है, मुझे लगता है कि प्रारंभिक घटनाओं http अनुरोध, डाटाबेस प्रश्नों या I/O फ़ाइल हो जाएगा पहुंच)।
यह एक पाश कहा जाता है, इसलिए नहीं कि घटना हलकों और लगातार होता है, लेकिन क्योंकि पाश की घटना के लिए तैयार करता है, घटना की जांच करता है, एक घटना डिस्पैच और फिर से प्रक्रिया को दोहराता है।
मैं दूसरा पैराग्राफ के बारे में एक संघर्ष विशेष रूप से वाक्यांश "प्रक्रिया फिर से दोहराता है"। मैंने स्वीकार किया कि उपरोक्त प्रश्न से ऊपर http.createServer कोड बिल्कुल "ईवेंट लूप" है क्योंकि यह बार-बार http अनुरोध ईवेंट सुनता है।
लेकिन मुझे नहीं पता कि निम्न कोड की पहचान कैसे करें जैसे ईवेंट-संचालित या ईवेंट लूप। यह डीबी क्वेरी समाप्त होने के बाद निकाल दिए गए कॉलबैक फ़ंक्शन को छोड़कर कुछ भी दोहराया नहीं जाता है।
database.query("SELECT * FROM table", function(rows) {
var result = rows;
});
कृपया, मुझे अपनी राय और उत्तर सुनें।
क्या होता है यदि 'CreateServer' में कॉलबैक (async) ऑपरेशन हैं? पहले अनुरोध करने के लिए कुछ सिंक ऑपरेशन ट्रिगर कॉलबैक प्रक्रिया तुरंत कहेंगे? और दो अनुरोध संसाधित करना प्रारंभ करते हैं जबकि पहले अनुरोध से कॉलबैक अभी भी चल रहा है? – Manali