[英]asynchronous in node.js
我想要传递数组,并使用数组中的数据从Redis获取数据以形成一个新的数组。 然后,用户使用新阵列即可工作。
我尝试用户async.map,以下代码:
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
});
但是循环结束时代码没有回调
我不确定问题到底是什么。
在http://requirebin.com/?gist=11136258上运行此代码,我得到了预期的结果。
如果您想知道为什么得到name1,name2,name3
是因为您将字符串和数组连接在一起,那么该数组将被强制转换为字符串,从而导致逗号分隔的项目列表。
如果要从对象中的某个字段到对象的其余部分进行映射,可以进行reduce
以使用该映射创建对象。 您可以将整个对象放在其中,也可以根据需要过滤名称。 我把那个例子放在了相同的要点上。
代码示例:
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);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.