gpt4 book ai didi

javascript - javascript中的同步和异步循环

转载 作者:可可西里 更新时间:2023-11-01 01:38:03 24 4
gpt4 key购买 nike

JavaScript 中的循环是同步的还是异步的? (对于,同时等)

假设我有:

for(let i=0; i<10; i++){
// A (nested stuff...)
}

// B ...

使用 for 有时 B 的执行会在 A 之前开始...(如此异步)

有没有办法以同步方式使用语句?

最佳答案

for 循环会立即运行直至完成,同时您的所有异步操作都已启动。

好吧,这里我们有一些嵌套循环。请注意,“BBB”总是在之后触发。

for(let i=0; i<10; i++){
for(let i=0; i<10; i++){
for(let i=0; i<10; i++){
console.log("AA")
}
}
}

console.log('BBB')

现在,看看这个

for(let i=0; i<10; i++){
setTimeout(function() {console.log("AA")}, 2000)
}

console.log('BBB')

这是因为所谓的“事件循环”。事实上,我们通过 setTimeout 模拟了一个异步操作。它可以是 ajax 调用或其他一些异步进程。

检查一下:http://latentflip.com/loupe

这将真正帮助您理解这些异步/同步循环主题。

已更新以显示 promises 在这里如何工作(在下面给出评论):

var stringValues = ['yeah', 'noooo', 'rush', 'RP'];
var P = function(val, idx){
return new Promise(resolve => setTimeout(() => resolve(val), 1000 * idx));
};


// We now have an array of promises waiting to be resolved.
// The Promise.all basically will resolve once ALL promises are
// resolved. Keep in mind, that if at any time something rejects
// it stops

// we iterator over our stringValues array mapping over the P function,
// passing in the value of our array.
var results = Promise.all(stringValues.map(P));

// once all are resolved, the ".then" now fires. It is here we would do
results.then(data =>
console.log(data) //["yeah", "noooo", "rush", "RP"]
);

如果我不够清楚,请告诉我。

关于javascript - javascript中的同步和异步循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173350/

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