Promise.all()与map()返回数组中未定义的项目

时间:2018-07-23 16:32:21

标签: javascript async-await es6-promise

尝试生成随机数数组:

const arr = await generateValues(20, 500);

async function generateValues(numOfValues, max){
  return await Promise.all(
    new Array(numOfValues).map(() => Math.ceil(Math.random() * max))
  );
}

const arr返回长度为20的数组,但全部为undefined

2 个答案:

答案 0 :(得分:3)

map会忽略数组中的空元素,因此必须首先使用fill

var arr = new Array( 20 ).fill( 0 ).map( () => { ... } )

答案 1 :(得分:1)

您可能不知道map,它不适用于空白或空数组。您必须使用fill插入至少一个元素。

尝试一下。

async function generateValues(numOfValues, max){
  return await Promise.all(
    new Array(numOfValues).fill(0).map(() => Math.ceil(Math.random() * max))
  );
}
const arr = await generateValues(20, 500);