gpt4 book ai didi

Javascript 循环的异步行为

转载 作者:行者123 更新时间:2023-12-02 23:20:57 26 4
gpt4 key购买 nike

我使用 async/await 异步获取数据,然后依次运行两个 for 循环。所以我的问题是,对于大数据集,for 循环是否会相互重叠,因为 js 是异步的,如果是,如何解决这个问题?在什么条件下循环可以重叠?

实际上,我正在尝试制作一个下拉菜单并且它可以工作,但我有这个疑问。

const createDropdown = async language => {
let i = 0;
let listPromise = new Promise((resolve, reject) => {
db.ref("Products/" + language).on('value', snapshot => {
resolve(snapshot.val())
})//Fetching Data
})

let list = await listPromise;

for(i in list)
dropdown.remove(0)

for(i in list)
dropdown.options[dropdown.options.length] = new Option(list[i].name, list[i].name)
}

我正在运行此代码,for 循环没有重叠,但是否有条件会重叠?

最佳答案

一个接一个地放入代码中的循环永远不会重叠,循环内的代码是同步的还是异步的。

for (var i = 0; i < 10; i++) {
doSomethingSync()
}



for (var j = 0; j < 10; j++) {
createPromise().then((res) => {console.log(res))
}


for (var k = 0; k < 10; k++) {
var res = await createPromise();
console.log(res);
}

上面,“I”循环完成其所有操作,然后是“J”循环,然后是“K”循环。

这是每个操作的顺序和详细信息

  1. “I”循环序列化 10 个同步操作。
  2. “J”循环创建 10 个不同的 Promise。它们可能以不同的顺序解决。
  3. “K”循环创建 10 个序列化的 Promise。每次迭代都会等到 Promise 得到解决,然后再进行网络迭代。

1、2 和 3 总是相继发生。

关于Javascript 循环的异步行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56955950/

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