在filter中怎么使用async/await?

当不使用async/await时,filter之后结果是对的,但是使用async/await之后结果就不正确了,比如

console.log([1, 2, 3, 4, 5].filter((i) => i % 2 == 0))
// [ 2, 4 ]
console.log([1, 2, 3, 4, 5].filter(async (i) => i % 2 == 0))
// [ 1, 2, 3, 4, 5 ]

那么在filter中怎么使用async/await?

jsarrayfilterasyncawait
1
206
小课
小课2022-07-15 23:18
1 个回答

这个有点类似在forEach中使用async/await,也可以用Promise.all(...)map来实现,先把条件过滤的结果计算出来,然后在filter中使用。

const arr = [1, 2, 3, 4, 5]
const results = await Promise.all(arr.map(async (i) => i % 2 == 0))
console.log(arr.filter((_, i) => results[i]))
1
小课
小课2022-07-15 23:36
你的回答

内容