आपको अभी भी async
. का उपयोग करना चाहिए लेकिन आपको async.waterfall
need चाहिए उस के लिए। यहां आपको विचार करने की आवश्यकता है:
अपने async
. को कॉल करने का एक मुख्य तरीका समारोह:
var getInformation = function(){
async.waterfall([
//Array of your functions in order, we will be back here later
], function (err) {
if(err){
console.log(err);
}else{
console.log('Everything OK!');
}
);
}
फिर आपको अपने कार्यों को async
. होना चाहिए अनुकूल, इसका मतलब है कि आपको कॉलबैक का उपयोग करना चाहिए और अपना डेटा एक फ़ंक्शन से दूसरे फ़ंक्शन में देना चाहिए। कुछ इस तरह:
function findUser(callback){
//Do something
if('Everything OK'){
callback(err, yourData); //err should be null if everything is OK and yourData should be the data that you wanna use in your next function. e.g. schoolId
}else{
callback(err); //Something was wrong, "err" should have something different to null
}
}
function findSchool(callback, schoolId){ //Note that we receive the parameter schoolId here but not in the first function
//Do something
if('Everything OK'){
callback(err, yourData); //err should be null if everything is OK and yourData should be the data that you wanna use in your next function. e.g. schoolName
}else{
callback(err); //Something was wrong, "err" should have something different to null
}
}
function findStudents(callback, schoolName){
//Do something
if('Everything OK'){
callback(err); //err should be null if everything is OK if this is the last function maybe we don't need to send back more data from here
}else{
callback(err); //Something was wrong, "err" should have something different to null
}
}
फिर आपको अपने कार्यों को अपनी मुख्य विधि में कॉल करना चाहिए:
var getInformation = function(){
async.waterfall([
findUser,
findSchool,
findStudents
//Note that there is no need to tell the functions the parameters they are sending or receiving here
], function (err) {
if(err){
console.log(err);
}else{
console.log('Everything OK!');
}
);
}
और बस इतना ही, आपके पास 3 कार्य हैं जिन्हें एक के बाद एक निष्पादित किया जाना चाहिए और कॉलबैक नरक की आवश्यकता नहीं है।