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可能会成功

下面编写的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可能会成功

常量检查==>{ 常数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这样的承诺