如何从嵌套的promise中返回值?

pos*_*eid 5 redis node.js promise bluebird

我在Redis中有一组电影ID: [1,2,3,4]以及一组包含实际数据的哈希值.现在,我想一次获取ID的所有电影数据.

我正在尝试使用蓝鸟,但我被卡住了.到目前为止,我有:

  function allMovies() {
    var movies, movieIds;
    return client.smembersAsync('movies.ids').then(function(ids) {
      movieIds = ids;
      movies =  _.map(movieIds, function(id) {
         var movie;
         return client.hmgetAsync("movies:" + id, 'title', 'description', 'director', 'year').done(function(data) {
           movie = data;
           return {
                 title: data[0], 
                 description: data[1], 
                 director: data[2],
                 year: data[3]
               };
          });
          return movie;
        });
    })

问题来自我的尝试,我总是得到一个新的承诺,而我只是在所有操作完成后对JSON感兴趣.

这里的任何人都能对此有所了解吗?

Esa*_*ija 13

在蓝鸟中,有一种更含糖的方式:

function allMovies() {
    return client.smembersAsync("movies.ids").map(function(id){
        return client.hmgetAsync( "movies:" + id, 'title', 'description', 'director', 'year');
    }).map(function(data){
        return {
            title: data[0],
            description: data[1],
            director: data[2],
            year: data[3]
        };
    });
}
Run Code Online (Sandbox Code Playgroud)