2013-11-25 4 views
19

को समझना मुझे दो वेब सर्वरों से डेटा का अनुरोध करने की आवश्यकता है। कार्य स्वतंत्र हैं; इसलिए, मैं aync.parallel का उपयोग कर रहा हूं। अब मैं केवल अपने एबी पेज के शरीर में 'एबीसी', 'xyz', और 'हो गया' लिख रहा हूं।नोड.जेएस async.parallel

चूंकि कार्य एक ही समय में किए जाते हैं, क्या मैं एक अजीब आउटपुट में चला सकता हूं? उदा।,

xab 
cyz 

कोड।

var async = require('async'); 

function onRequest(req, res) { 
    res.writeHead(200, { 
     "Content-Type" : "text/plain" 
    }); 

    async.parallel([ function(callback) { 
     res.write('a'); 
     res.write('b'); 
     res.write('c\n'); 
     callback(); 
    }, function(callback) { 
     res.write('x'); 
     res.write('y'); 
     res.write('z\n'); 
     callback(); 
    } ], function done(err, results) { 
     if (err) { 
      throw err; 
     } 
     res.end("\nDone!"); 
    }); 

} 

var server = require('http').createServer(onRequest); 
server.listen(9000); 
+1

'res' पर जो लिखा गया है उसका क्रम इस पर निर्भर करता है कि async.parallel कार्य पहले से खत्म होता है लेकिन जैसे ही कार्य आदेश से स्वतंत्र होते हैं, इससे कोई फर्क नहीं पड़ता। – Bulkan

+0

@ बुल्कन, धन्यवाद। लेकिन 'समांतर' ठीक से काम नहीं करता है। कृपया [एक नया प्रश्न] पढ़ें (http://stackoverflow.com/questions/20186787/node-js-async-parallel-doesnt-wait-until-all-the-tasks-have-completed)। –

उत्तर

37

आप जिस क्रम में परिणाम मुद्रित कर रहे हैं में पूरी तरह से कुछ होना चाहते हैं, तो आप callbacks के माध्यम से अपना डेटा (abc\n और xyz\n) पास करना चाहिए (पहली पैरामीटर त्रुटि है) और संभाल/उन्हें लिखना अंतिम async.parallel कॉलबैक के results तर्क में।

async.parallel([ 
    one: function(callback) { 
     callback(null, 'abc\n'); 
    }, 
    two: function(callback) { 
     callback(null, 'xyz\n'); 
    } 
], function(err, results) { 
    // results now equals to: [one: 'abc\n', two: 'xyz\n'] 
}); 
+0

मैं तर्क पारित कर सकता हूं, लेकिन मुझे समानांतर कार्यों –

+0

के भीतर लंबे संचालन करना चाहिए, मुझे लगता है कि आप दो तारों (शायद डेटाबेस से) प्राप्त करने के लिए कुछ लंबा ऑपरेशन कर रहे थे, डेटा को डेटा (समानांतर) को पुनर्प्राप्त करने के लिए कोड को अलग करने का सुझाव देते हुए, प्रसंस्करण ('res.write') यह (अनुक्रमिक)। –

+0

वह जीनियस है, धन्यवाद –