今天用forEach写了一段循环请求的代码 遇到了执行顺序的问题
// 类似这样的代码
const id = [1,2]
let datas = []
id.forEach(async (item) => {
const { data } = await getData({ Id: item })
datas.push[data]
})
// 假如id为1的请求回来的数据为 data1 id为2的数据为 data2
// 要求在push后的datas内的顺序为[data1, data2] 因为后面要根据datas的索引进行取值
// 完了我刷新页面后得到的是[data2 ,data1] 再次刷新又成了[data1, data2]
// 数组内push的顺序完全是随机的
解决:
如果严格要求list顺序的话 建议还是使用for循环比较好
const id = [1,2]
let datas = []
for(var i = 0; i < id.length; i++) {
const { data } = await getData(id[i])
datas.push(data)
}
// 这样写后面得到的顺序一直是固定的[data1, data2]