微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么async.map返回数组的多个副本?

如何解决为什么async.map返回数组的多个副本?

const async = require('async');

const arr = [
    { name: 'john',id: '1' },{ name: 'Andrie',id: '2' }]

let collectArr = [];
let data = async.mapLimit(arr,5,async function (input) {

    collectArr.push({ name: input.name,id: input.id });
    return collectArr;
})

data.then((result) =>{
    console.log('success',result);
}).catch(e => console.log('err'));

所以在这里,我向async.mapLimit提供了没有回调的数组,并期望在这里做出承诺。 预期的输出:-[{{name:'john',id:'1'},{name:'Andrie',id:'2'}],

获得结果:-

[[{{:'john',id:'1'},{name:'Andrie',id:'2'}], [{name:'john',id:'1'},{name:'Andrie',id:'2'}]]

所以我的问题是为什么要创建多个数组副本,如何处理呢?

解决方法

您不必要地返回一个子数组,而当您只想返回新对象时,每次迭代都引用同一数组。

let data = async.mapLimit(arr,5,async function (input) {
    return { name: input.name,id: input.id };   
});

不确定为什么需要异步

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。