async.js方法中的async.js方法

免责声明:新的JS和周围的一切。 🙂

我想知道是否可以嵌套在另一个asynchronousfunction

我在节点中有一个瀑布方法:

/** * POST new travel wish */ router.post('/add', function(req, res) { var db = req.db; console.log(req.body); // add properties: customer_id and timestamp var date = new Date(); //... var notif; async.waterfall( [ // find the User function(next){ db.collection(userCollection).findOne({_id: new ObjectId(req.session.userID)}, next); }, // insert a new travelwish function(user, next){ notif = { 'username': user.username, }; // TODO: add a async.parallel db.collection('travelwishlist').insert(req.body, next); }, // setup timer for processing and send confirmation function(insertedTravelWish, next){ NotificationManager.sendConfirmationNotification(notif); next(null, insertedTravelWish); } ], // waterfall callback --> send http response. function (err, insertedTravelWish) { res.send( //if everything is ok the system sends the travel wish ID to the client otherwise error (err === null) ? { msg: insertedTravelWish[0]["_id"] } : { msg: 'err' } ); } ); }); 

我想插入多个项目,而不是一个。

我想我可以平行的做,但是我可以把它放在现有的瀑布里面吗?

是的,你完全可以做到这一点,这是一些例子

 async.waterfall([ function (callback) { callback(null, 1); }, function (arg, callback) { callback(null, arg1 + 1); }, function (arg, callback) { async.parallel([ function (_callback) { ... }, function (_callback) { ... }, ], finalCallback); } ]); 

只是一个小提示,确保你为这些callback提供了不同的名称(所以你不会调用另一个),如果我有两个嵌套函数,大部分时间需要callback我把它们命名为callback _callback __callback