问题描述
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 };
});
不确定为什么需要异步