【发布时间】:2021-05-18 06:34:55
【问题描述】:
我想在 Javascript 中迭代一个数组,处理一个元素需要一些时间。
我想直到那个元素被处理,等待那个。
var splittedText = ["Hello", "World", "How", "Are", "You", "Today"];
var text = "";
splittedText.forEach((name) => {
if (name === "Are") {
setTimeout(() => {
text = text + "ARE"
}, 2000)
} else {
text = text + name + " ";
}
console.log(text)
});
预期输出 - Hello World 你今天好吗。
实际 - Hello World 你今天怎么样
【问题讨论】:
-
您通过引入
setTimeout专门使其A同步。再次删除它及其同步。你真的在问什么?这在很大程度上暗示了 XY Problem - 您是在问如何在循环中等待异步操作完成? -
您不能使
forEach循环同步。它忽略返回值并在当前函数返回之后调用下一个函数。 -
@ThomasSablik a
forEach仍然是同步的? -
@evolutionxbox 是的,
forEach是同步的。但不是里面的功能。而且你不能让forEach等待异步函数。 -
那么您的标题会产生误导-您不是在问如何使循环同步(它们已经是!),而是在问如何在循环中等待异步操作。其中有大约一百万个重复项
标签: javascript arrays