Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js中的异步_Javascript_Node.js_Asynchronous - Fatal编程技术网

Javascript node.js中的异步

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

我想要传递数组,并使用数组中的数据从redis获取数据以形成一个新数组。然后使用新数组来工作

我尝试使用user 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  
});

但是循环完成时代码没有回调

我不确定问题到底是什么。
在上运行此代码得到了预期的结果。
如果您想知道为什么会出现
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进行异步调用???