繁体   English   中英

在node.js中异步

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM