gpt4 book ai didi

javascript - 有一种简单的方法可以确保 JavaScript 中 forEach/for 循环的正确顺序吗?

转载 作者:行者123 更新时间:2023-12-03 02:23:39 24 4
gpt4 key购买 nike

我的 node.js 应用程序中有以下函数,它循环遍历数组并对其执行特定函数:

var splitStatements = ['1','2','3']; // this is simplified

splitStatements.forEach(function(statement) {

// `statement` is written into the database
// the response is obtained and modified as `response`

console.log(response);

});

如何确保无论forEach函数内部的函数多么复杂,数组的每个元素都会被一一处理,使得结果输出类似于

1 modified
2 modified
3 modified

实际上我有时会得到类似的东西

1 modified
3 modified
2 modified

取决于 splitStatements 数组中每个元素的复杂程度。

我知道发生上述情况是因为代码执行是异步的,那么确保异步执行时每个下一个过程确保前一个过程已经执行才能启动的最佳实践方法是什么?

最佳答案

如果插入数据的顺序确实很重要,那么您需要等待每个查询完成,然后再发送下一个查询。

不要使用 for 循环。

编写一个函数,将数组中的下一个项设置到数据库中。直接调用该函数一次,然后在回调中再次调用该函数,表明异步数据库调用已完成。

包含一个测试,以便在用完数组中的项目时停止!

如果不需要保留数组的内容,可以使用arr.unshift()来获取下一项。如果没有得到结果,则说明已到达终点。

如果您需要保留数组,请使用变量(传统上是i)来跟踪您所在的数组索引。每次加一。

function insert_into_database() {
var item = arr.unshift();
if (item) {
add_to_database(item).then(insert_into_database);
}
}

关于javascript - 有一种简单的方法可以确保 JavaScript 中 forEach/for 循环的正确顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49048739/

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