如何依次循环运行这些异步功能?

时间:2019-06-24 14:15:44

标签: 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

1 个答案:

答案 0 :(得分:0)

Recusrion可以解决问题。

const check = () => {
    const arr = [3,2,1]

    var i = 0, val;
    const do_the_thing = ()=>{
      setTimeout(()=>{
        val = arr[i];
        i++;
        console.log(val);
        if(arr[i]) do_the_thing();
      }, val*1000)
    };

    do_the_thing();
}

check();