अनुरोध करने के लिए मैंने एक नोड स्क्रिप्ट लिखी है जिसे REST API डेटा (लाइब्रेरी अनुरोध का उपयोग करके) का अनुरोध करके कुछ डेटा प्राप्त होता है। यह इतना जैसे कार्यों की एक जोड़ी के होते हैं:एसिंक जैसे नोड पुस्तकालयों के साथ 'इस' समस्याओं को हल करने और
var data = { /* object to store all data */ },
function getKloutData() {
request(url, function() { /* store data */}
}
// and a function for twitter data
क्योंकि मैं प्राप्त करने में कठिनाई के बाद कुछ सामान करना चाहते हैं सब मैं पुस्तकालय async इस्तेमाल किया चलाने के लिए सब तो जैसे कार्यों लाने:
async.parallel([ getTwitterData, getKloutData ], function() {
console.log('done');
});
यह सब ठीक काम करता है, फिर भी मैं एक वस्तु पैटर्न के अंदर सब कुछ डाल करने के लिए तो मैं एक ही समय में एक से अधिक खातों लाने सकता है चाहता था:
function Fetcher(name) {
this.userID = ''
this.user = { /* data */ }
this.init();
}
Fetcher.prototype.init = function() {
async.parallel([ this.getTwitterData, this.getKloutData ], function() {
console.log('done');
});
}
Fetcher.prototype.getKloutData = function(callback) {
request(url, function() { /* store data */ });
};
इसका कारण यह है async काम नहीं करता है और यह परिवर्तन का अनुरोध संदर्भ।
Fetcher.prototype.init = function() {
async.parallel([ this.getTwitterData.bind(this), this.getKloutData.bind(this) ], function() {
console.log('done');
});
}
Fetcher.prototype.getKloutData = function(callback) {
function saveData() {
/* store data */
}
request(url, saveData.bind(this);
};
मैं कुछ बुनियादी गलत या कुछ कर रहा हूँ: एक ही रास्ता मैं इसे चारों ओर हो सकता है async और अनुरोध के माध्यम से सब कुछ मैं पारित जुड़ कर रहा है? मुझे लगता है कि स्क्रिप्ट पर वापस आना और इसे child_processes को फेंकना बहुत अधिक है।
अंडरस्कोर पुस्तकालय एक आसान समारोह bindAll' कहा जाता है कि इस 'कम दर्दनाक बनाता है। और यदि आप कॉफीस्क्रिप्ट का चयन करते हैं, तो आप केवल वसा तीर के साथ विधियों को परिभाषित कर सकते हैं और आपको बिल्कुल स्पष्ट बाध्यकारी नहीं करना पड़ेगा। –