Ho un set di ID di film in Redis: [1,2,3,4]
e un set di hash con i dati effettivi. Ora, voglio recuperare tutti i dati del film per gli ID in una volta.Come restituire i valori dalla promessa nidificata?
Sto cercando di usare le bluebird promisses, ma mi sono bloccato. Finora, ho:
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; }); })
Il problema è da quello che cerco, che ho sempre tornare una nuova promessa, mentre io sono solo interessati a un JSON dopo tutte le operazioni hanno finito.
Chiunque qui può far luce su questo?
hmm .. la mappa non sembra funzionare. Ottengo: – poseid
{isFulfilled: true, isRejected: false, fulfillmentValue: [], rifiuto: ragionevole: – poseid
@poseid come stai usando la funzione 'allMovies()'? Se lo si utilizza come 'allMovies(). Then (function (movies) {console.log (movies)})' allora questo è un bug grave. Tuttavia, sembra proprio che lo si stia usando 'console.log (allMovies())' - la funzione non restituisce i film restituisce una promessa per i film. – Esailija