gpt4 book ai didi

node.js - 如何从嵌套的 promise 中返回值?

转载 作者:IT王子 更新时间:2023-10-29 05:57:40 26 4
gpt4 key购买 nike

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

我正在尝试使用 bluebird promise,但我卡住了。到目前为止,我有:

  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;        });    })

问题出在我的尝试中,我总是得到一个新的 promise ,而我只对所有操作完成后的 JSON 感兴趣。

这里的任何人都可以阐明这一点吗?

最佳答案

在 bluebird 中,有一种更甜美的方式来做到这一点:

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]
};
});
}

关于node.js - 如何从嵌套的 promise 中返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19438121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com