首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让monk很好地使用Q.all

让monk很好地使用Q.all
EN

Stack Overflow用户
提问于 2013-11-05 05:38:17
回答 1查看 411关注 0票数 0

我有一个帖子集合和一个用户集合。在返回帖子列表时,我希望解析对用户的引用。这意味着对用户的每一行进行异步调用。当monk返回一个promise时,它会返回响应为"complete“或"success”的内容。Q期望一些响应"then“的东西。我需要使用Q.all来等待所有用户被吸引到帖子中,但我不能让它很好地发挥monk的promise风格。

这是我的尝试。

代码语言:javascript
复制
exports.posts = function (req, res) {
    req.posts.find()
      .complete(function(err, posts) {
        handle(err, res, posts);
        var postsWithUsers = posts.map(function(post) {
          return req.users.findOne({_id: post.userId}).complete(function(err, result) {
            post.user = result;
          });
        });
        Q.all(postsWithUsers.map(function(monkPromise) {
          monkPromise.then = monkPromise.complete
        }), function(err, results) {
          console.log("done with all posts");
        });
    });
};
EN

回答 1

Stack Overflow用户

发布于 2014-02-13 04:17:30

只是为了外面的所有人。这是一种解决方案,也许不是最好的。

代码语言:javascript
复制
exports.posts = function (req, res) {
    req.posts.find()
      .complete(function(err, posts) {
        handle(err, res, posts);
        var postsWithUsers = posts.map(function(post) {
          var deferred = Q.defer();
          return req.users.findOne({_id: post.userId}).complete(function(err, result) {
            post.user = result;
            deferred.resolve(result);
          });
          return deferred.promise;
        });
        Q.all(postsWithUsers, function(err, results) {
          console.log("done with all posts");
        });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19777646

复制
相关文章

相似问题

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