Javascript 如何按顺序在循环中运行这些异步函数?
下面编写的javascript代码异步运行,并以以下格式生成输出Javascript 如何按顺序在循环中运行这些异步函数?,javascript,asynchronous,Javascript,Asynchronous,下面编写的javascript代码异步运行,并以以下格式生成输出 const check = () => { const arr = [3,2,1] arr.forEach(async (val) => { await setTimeout(() => console.log(val), val*1000) }) } check(); 实际输出为: 1 2 3 但我想要以下格式的输出: 3 2 1 Recosrion可能会成功
const check = () => {
const arr = [3,2,1]
arr.forEach(async (val) => {
await setTimeout(() => console.log(val), val*1000)
})
}
check();
实际输出为:
1
2
3
但我想要以下格式的输出:
3
2
1
Recosrion可能会成功 常量检查==>{ 常数arr=[3,2,1] var i=0,val; const do_the_thing==>{ 设置超时=>{ val=arr[i]; i++; console.logval; 如果我做了那件事; },val*1000 }; 做你想做的事; }
检查setTimeout不会返回承诺,因此等待它不起作用。即使这样,forEach也不能用于异步函数。使用实际for循环而不是foreach是否希望它在下一个计时器启动之前完全等待其中一个完成打印?是否确实要运行setTimeout或其他异步函数?答案将非常不同,这取决于您想要调用的函数是返回承诺还是不返回像setTimeout这样的承诺