Наличие обратного вызова после завершения двух асинхронных запросов с использованием mongoose - PullRequest
4 голосов
/ 21 ноября 2010

Используя mongoose, я хотел бы иметь обратный вызов после завершения 2 разных запросов.

var team = Team.find({name: 'myteam'});
var games = Game.find({visitor: 'myteam'});

Затем, как связать и / или обернуть эти 2 запроса в обещаниях, если я хочу, чтобы эти запросы не блокировались и выполнялисьасинхронно?

Я бы хотел избежать следующего кода блокировки:

team.first(function (t) {
  games.all(function (g) {
    // Do something with t and g
  });
});

Ответы [ 2 ]

12 голосов
/ 02 марта 2011

Я думаю, что вы уже нашли решение, но в любом случае.Вы можете легко использовать библиотеку async .В этом случае ваш код будет выглядеть так:

async.parallel(
    {
        team: function(callback){
            Team.find({name: 'myteam'}, function (err, docs) {
                callback(err, docs);
            });
        },
        games: function(callback){
            Games.find({visitor: 'myteam'}, function (err, docs) {
                callback(err, docs);
            });
        },                    
    }, 
    function(e, r){
        // can use r.team and r.games as you wish
    }
);
1 голос
/ 17 февраля 2011

Я думаю, вы хотите посмотреть на что-то вроде

https://github.com/creationix/step

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...