मैं एक विशुद्ध रूप से तुल्यकालिक, एकल थ्रेड किए कमांड लाइन Node.js में कार्यक्रम है, जो एक भी बाइनरी फ़ाइल है, जिसके लिए मैं WriteStream
उपयोग कर रहा हूँ लिखने के लिए की जरूरत है लिख रहा हूँ। मेरे उपयोग पैटर्न की तर्ज पर है:Node.js WriteStream तुल्यकालिक
var stream = fs.createWriteStream(file)
stream.write(buf1)
stream.write(buf2)
यह काम करने के लिए लगता है, लेकिन प्रलेखन यह अतुल्यकालिक है कहते हैं और मुझे यकीन है कि मैं कोड है कि समय के 99% काम करता है लिख नहीं कर रहा हूँ बनाना चाहते हैं। मुझे परवाह नहीं है वास्तव में जब डेटा के रूप में लंबे समय तक लिखा हो जाता है के रूप में यह निर्दिष्ट क्रम में लिखा गया था और कोई बाद में की तुलना में जब कार्यक्रम बाहर निकलता है, और डेटा की मात्रा छोटा है तो गति और स्मृति की खपत मुद्दे नहीं हैं है।
मैंने stream.end()
का उल्लेख देखा है, लेकिन ऐसा लगता है कि इसके बिना काम करना प्रतीत होता है और मैंने यह भी सुझाव देखा है कि अगर आप कॉलबैक का उपयोग नहीं कर रहे हैं तो इसे कॉल करना वास्तव में एक बुरा विचार हो सकता है क्योंकि यह सब से पहले कॉल हो सकता है डेटा लिखा है।
(यह देखते हुए कि मैं चाहता हूँ विशुद्ध रूप से तुल्यकालिक) मेरे दृष्टिकोण सही है या क्या मैं के लिए बाहर देखने की जरूरत है?
मुझे पूरी तरह से यकीन नहीं है कि यह आपके उपयोग के मामले में फिट होगा (और यह पहचानें कि यह काफी नहीं हो सकता है खोज रहे हैं) लेकिन क्या आपने सिंक्रोनस विकल्प के रूप में सिर्फ 'fs.write' का उपयोग करने पर विचार किया है? http://nodejs.org/api/fs.html#fs_fs_write_fd_buffer_offset_length_position_callback – imjared
अच्छा प्रश्न @imjared! इसका सिंक्रोनस संस्करण नौकरी करना प्रतीत होता है। दोनों के बीच क्या अंतर है? या इसके अस्तित्व को देखते हुए, एक और तरीका डालें, WriteStream के अस्तित्व का क्या कारण है? क्या लिखितस्ट्रीम मुख्य रूप से पाठ लिखने के लिए लक्षित है? – rwallace
पूरी तरह से ईमानदार होने के लिए मुझे धाराओं की सबसे अच्छी समझ नहीं है लेकिन जब भी मुझे कुछ लिखने के लिए एक तुल्यकालिक दृष्टिकोण की आवश्यकता होती है। http://stackoverflow.com/a/8770026/628699 – imjared