Javascript node.js中的异步
我想要传递数组,并使用数组中的数据从redis获取数据以形成一个新数组。然后使用新数组来工作 我尝试使用user async.map,代码如下:Javascript node.js中的异步,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我想要传递数组,并使用数组中的数据从redis获取数据以形成一个新数组。然后使用新数组来工作 我尝试使用user async.map,代码如下: var sampleData = [{ 'name': 'name1', 'age': 'age1' }, { 'name': 'name2', 'age': 'age2' }, { 'name': 'name3', 'age': 'age3' }]; async.mapSeries(sampleDat
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
});
但是循环完成时代码没有回调我不确定问题到底是什么。
在上运行此代码得到了预期的结果。
如果您想知道为什么会出现
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);
});
我将使用name1 name2 name3获取数据结构{['name1']=>{'add':'aaa','age':'age1'}['name2']=>{'add':'bbb','age':'age1'}。我希望用户name1,name2,name3获取二维数组的数据结构>{[name1]=>{'a','b'}[name2]=>{'c','d'}然后使用它来工作。我更新了示例,展示了如何使用reduce来实现这一点。在
函数(数据,回调)
mapper函数中,您应该对redis进行异步调用???