码迷,mamicode.com
首页 > Web开发 > 详细

Node.js之Promise维护(同步)多个回调(异步)状态

时间:2015-12-25 13:07:58      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉。
.NET程序员初用node.js最需要适应的就是异步开发, 全是异步,常规逻辑下遍历列表都是异步,如何保证列表遍历执行完毕?Promise帮你搞定!
金天微信:15998603918 欢迎找我聊聊天。

 

Node.js编程,清一色的回调。

如果没有Promise, 一连串的业务逻辑,从第一步回调到最后一步,“单线程逻辑”还搞的定,遭遇“多线程逻辑”,便陷入回调地狱。

自从有了Promise, 一切都不在是问题!

 

应用场景举例:

在一个请求完成查询MonogoDB的所有Collection并统计Document数量。

 

具体查询逻辑
1. listDatabases(callback)

2. 遍历collections, 分别查询Documents数量, count(callback)

3. 返回collections.

代码:

function(req, res){
    var db = ms.connection.db;
    var tables = db.listCollections().toArray();
    //Promise#then变回调为常规写法,但仍然是异步执行
    tables.then(function(rs){
        var ps = [];
        rs.forEach(function(collection){
            ps.push(db.collection(collection.name).count().then(function(count){
                collection.itemCount = count;
            }));

        });
        
        //Promise.all 确保所有collection.itemCount都被查询出来,起到同步的作用
        Promise.all(ps).then(function(){
            res.send(rs);
        });
    });

}

  上面为非完整代码,不能直接拿来使用,仅作为相关业务思路、解决方案的参考。

 

Node.js之Promise维护(同步)多个回调(异步)状态

标签:

原文地址:http://www.cnblogs.com/jtbj/p/nodejs-promise-all-collections.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!