वहाँ require
कॉल सिंक बनाने के लिए एक तरीका है। इसे CommonJS शैली:
var module = require('modulepath')
इसलिए, यदि आप नहीं अपने नेस्ट की आवश्यकता होती है कॉल में एक कारखाने funciton की आवश्यकता होगी, तो आप "सिंक" द कॉल कि जिस तरह से की आवश्यकता होती है सकते हैं ... लेकिन आप बाहर हैं, क्योंकि आप ऐसा करेंगे नसीब की।
एएमडी शैली requre(depsArray, factoryFn)
बिल्कुल आपके कोड को समानांतर धागे में धक्का देने जैसा है। इसे "सिंक" बनाने का कोई तरीका नहीं है लेकिन परिणाम को समन्वयित करने के लिए आप "सेमफोर" का उपयोग कर सकते हैं।
आपके प्रश्न का उत्तर भी घोंसला वाले ए और नेस्टेड बी उपभोग पर निर्भर करता है। अगर वे ऊपर से कुछ उत्पाद पर निर्भर करती है की आवश्यकता होती है की तरह तो तुम बिल्कुल "थ्रेड सेमाफोर" का उपयोग करना चाहिए और सिर्फ परिभाषित नामित कॉल में नेस्टेड आवश्यकता कॉल धक्का नहीं कर सकते हैं:
function someFunction(callback) {
var resultOfOuterCode = someResultOfCalculations
//top level require
require([...], function(...) {
var resultOfTopRequireCode = someOtherResultOfCalculations
var semaphore = {
'count': 2 // represents the number of thread that need to be "done" before
, 'callback':callback // this callback is fired.
, 'checkIfLast': function(){
this.count -= 1
if (!this.count) {
// count is now 0 - time to run our callback
this.callback()
}
}
}
//nested require A
require([...], function(...) {
// using resultOfTopRequireCode // <-- !!!! this is important part
...
semaphore.checkIfLast()
});
//nested require B
require([...], function(...) {
// using resultOfTopRequireCode // <-- !!!! this is important part
semaphore.checkIfLast()
});
});
};
दूसरे शब्दों में, बस आवश्यकता होती है (dependsArray, factoryFn के बारे में सोच) "धागे" के रूप में और इसके लिए धागे का उपयोग करने की अपनी समझ लागू करें।
क्या आप निर्भरताओं का उपयोग नहीं कर रहे हैं? – epascarello
हां। हालांकि हम अपनी सामग्री को अलग फाइलों में अलग करने की कोशिश कर रहे हैं। उदाहरण के लिए उपरोक्त कोड FileA.js में है। FileB.js कॉलबैक के साथ कुछ फ़ंक्शन() को कॉल करता है। हालांकि, कॉलबैक की कुछ सेटिंग्स पर निर्भरता है जो FileA.js की आवश्यकता() कॉलबैक में होती है। समस्या यह है कि आवश्यकता की असीमित प्रकृति का मतलब है कि कॉलबैक को इसकी निर्भरता() सेट पर निर्भर होने से पहले निष्पादित किया जाता है। – user657352