एक पुस्तकालय जो मैंने नोड में उपयोग किया है अक्सर असिनक (https://github.com/caolan/async) है। आखिरकार मैंने जांच की कि ब्राउजर के लिए भी इसका समर्थन है ताकि आप अपने वितरण में एनपीएम/कॉन्सैट/इसे कम करने में सक्षम होना चाहिए। यदि आप सर्वर-साइड पर इसका उपयोग कर रहे हैं तो आपको https://github.com/continuationlabs/insync पर विचार करना चाहिए, जो कि एसिंक का थोड़ा बेहतर संस्करण है, जिसमें कुछ ब्राउज़र समर्थन हटा दिए गए हैं।
सशर्त एसिंक कॉल का उपयोग करते समय मैं उपयोग किए जाने वाले सामान्य पैटर्न में से एक है जो मैं क्रम में उपयोग करना चाहता हूं और async.waterfall को पास करता हूं।
मैंने नीचे एक उदाहरण शामिल किया है।
var tasks = [];
if (conditionOne) {
tasks.push(functionOne);
}
if (conditionTwo) {
tasks.push(functionTwo);
}
if (conditionThree) {
tasks.push(functionThree);
}
async.waterfall(tasks, function (err, result) {
// do something with the result.
// if any functions in the task throws an error, this function is
// immediately called with err == <that error>
});
var functionOne = function(callback) {
// do something
// callback(null, some_result);
};
var functionTwo = function(previousResult, callback) {
// do something with previous result if needed
// callback(null, previousResult, some_result);
};
var functionThree = function(previousResult, callback) {
// do something with previous result if needed
// callback(null, some_result);
};
बेशक आप इसके बजाय वादे का उपयोग कर सकते हैं। किसी भी मामले में मैं async या वादे का उपयोग करके घोंसले कॉलबैक से बचना पसंद करता हूं।
चीजें आप नहीं नेस्टेड कॉलबैक का उपयोग करके बच सकते हैं में से कुछ चर टक्कर, उत्थापन कीड़े, सही>>>>, हार्ड पढ़ने के लिए कोड के लिए "मार्चिंग", आदि
Async-का इंतजार पैकेज मदद मिल सकती है (एक सिंक शैली में एसिंक कोड लिखने की अनुमति देता है, अपवादों का समर्थन करता है आदि) https://www.npmjs.com/package/asyncawait - ऐसे वाक्यविन्यास को भविष्य में नोड संस्करणों में भी मूल रूप से समर्थित किया जाएगा, https: // github देखें।कॉम/नोडज/वादे/मुद्दे/4 –