如何解决为什么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 举报,一经查实,本站将立刻删除。