2014-04-21 3 views
0

je veux pour passer tableau, et utiliser des données dans le tableau obtenir des données de redis pour former un nouveau tableau. Ensuite, utilisez le nouveau tableau pour travailler.asynchrone dans node.js

i essayer utilisateur async.map, code suivant:

var sampleData = [{ 
    'name': 'name1', 
    'age': 'age1' 
}, { 
    'name': 'name2', 
    'age': 'age2' 
}, { 
    'name': 'name3', 
    'age': 'age3' 
}]; 

async.mapSeries(sampleData, function (data, callback) { 
    return callback(null, data['name']); 
}, function (err, results) { 
    console.log('results : ' + results); //results : name1,name2,name3 
}); 

mais le code ont callback lorsque la finition boucle

+0

Dans votre 'fonction (données, rappel)' fonction mappeur vous devez faire le * asynchrone * Appel à Redis ??? – Bergi

Répondre

0

Je ne suis pas sûr de ce que la question est exactement.
Exécution de ce code sur http://requirebin.com/?gist=11136258 J'ai obtenu le résultat attendu.
Si vous vous demandez pourquoi vous avez obtenu name1,name2,name3 parce que vous concatéez la chaîne et le tableau, le tableau est converti en chaîne, ce qui entraîne une liste d'éléments séparés par des virgules.

Si vous souhaitez appliquer un mappage d'un certain champ dans les objets au reste de l'objet, vous pouvez créer un objet avec ce mappage à reduce. Vous pouvez placer tout l'objet ou filtrer le nom si vous le souhaitez. Je mets cet exemple dans le même sens.

Exemple de code:

var async = require('async'); 
var sampleData = [{'name':'name1', 'age':'age1'},{'name':'name2', 'age':'age2'},{'name':'name3', 'age':'age3'}]; 
async.mapSeries(sampleData, function (data,callback) { 
    return callback(null, data['name']); 
}, function(err, results) { 
    console.log('results : ', results); 
}); 

// Getting data by name 
async.reduce(sampleData, {}, function (byName, data, callback) { 
    byName[data.name] = {age: data.age}; 
    callback(null, byName); 
}, function (err, dataByName) { 
    console.log('Data by name', dataByName); 
}); 
+0

je vais utiliser nom1 nom2 nom3 pour obtenir la formation des données {['nom1'] => {'ajouter': 'aaa', 'age': 'age1'} ['name2'] => {'add': ' bbb ',' age ':' age1 '}}. – skdvn

+0

je veux nom d'utilisateur1, nom2, nom3 pour obtenir la formation de données au tableau bidimensionnel > {[name1] => {'a', 'b'} [name2] => {'c', 'd'}} puis l'utiliser pour travailler. – skdvn

+0

J'ai mis à jour l'exemple pour montrer comment vous pouvez le faire en utilisant réduire. – TheShellfishMeme

Questions connexes