首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >async.js方法中的async.js方法

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

Stack Overflow用户
提问于 2015-01-29 11:03:27
回答 1查看 64关注 0票数 1

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

我想知道我们是否可以相互嵌套异步函数。

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

代码语言:javascript
复制
/**
 * 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' }
         );
        }
     );
});

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

--我想我可以并行完成这个任务,但是我可以把它放到现有的瀑布中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 12:47:43

是的,你完全可以做到,下面是一个例子

代码语言:javascript
复制
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时,请确定它们的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28213077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档