gpt4 book ai didi

javascript - 为什么使用map,forEach和for循环将数组插入数据库时​​顺序不同

转载 作者:行者123 更新时间:2023-12-05 02:38:02 25 4
gpt4 key购买 nike

我有一个数组 [1,2,3,4,5],当插入数据库时​​,除了在数据库中收到的结果类似于 [1,2,3,4,5]。但是只有循环给我一个预期的结果,map() 和 forEach() 总是给我无序数组,如 [1,3,4,5,2] 或 [4,3,2,5,1] 等等。这是我的代码:

arrayChild.map(async item => {
await this.repository.save(item)
});

arrayChild.forEach(async item => {
await this.repository.save(item)
});

for (let i = 0; i < arrayChild.length; i++) {
await this.repository.save(arrayChild[i])
}

请告诉我原因。感谢您的关注

最佳答案

因为 mapforEach 方法不处理您以 async await 方式传递的异步函数。

当您检查 polyfill在这两种方法中,您会发现这样一行 callback.call(T, kValue, k, O);。所以,基本上,它只是执行 callback。如果 callback 是一个异步方法,它不会等待它的执行完成。相反,它会继续执行其他代码。

因此,当您将数据数组保存到数据库时,您在 mapforEach 中的回调只是发出一些查询,数据库执行的最终顺序可能是不确定的.

关于javascript - 为什么使用map,forEach和for循环将数组插入数据库时​​顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69798224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com