मेरे पास एक्सप्रेस के साथ नोडजेएस में लिखा गया है और एप्लिकेशन इवेंटइमीटर का उपयोग करने के लिए उत्सुक घटनाओं को सुनकर मुख्य कोड में प्लगइन के साथ प्लगइन आर्किटेक्चर बनाने के लिए एक प्रकार का प्लगइन आर्किटेक्चर बनाने का प्रयास कर रहा है।नोडजेएस इवेंट उत्सर्जित करने के लिए कॉलबैक के लिए प्रतीक्षा करें
मेरी समस्या तब होती है जब एक प्लगइन फ़ंक्शन एक एसिंक अनुरोध (इस मामले में मोंगो से डेटा प्राप्त करने के लिए) बनाता है, इससे प्लगइन कोड समाप्त हो जाता है और मूल एमिटर पर नियंत्रण वापस आ जाता है जो एसिंक अनुरोध से पहले निष्पादन को पूरा करेगा प्लगइन कोड खत्म होता है।
उदाहरण के लिए:
मुख्य अनुप्रयोग:
// We want to modify the request object in the plugin
self.emit('plugin-listener', request);
प्लगइन:
// Plugin function listening to 'plugin-listener', 'request' is an arg
console.log(request);
// Call to DB (async)
this.getFromMongo(some_data, function(response){
// this may not get called until the plugin function has finished!
}
'getFromMongo' समारोह से मुख्य कोड के लिए वापस एक कॉलबैक फ़ंक्शन से बचने के लिए मेरे कारण है कि वहाँ घटना को सुनकर 0 या कई प्लगइन्स हो सकते हैं। आदर्श रूप में मैं डीबी सामान मुख्य अनुप्रयोग के लिए नियंत्रण लौटने
कई धन्यवाद