异步/等待无法正常工作

Kai*_*nan 1 javascript

我想首先将第一个数字输入console.log,但事实并非如此.我究竟做错了什么?

谢谢.

let timer = function(time, message) {
    setTimeout((time) => {
        console.log(`ALERT: ${message}`);
    }, time);
  //return time;
}

const asyncDemo = async function asyncDemo(time, message) {
    try {
        var time1 = await timer(3000, "Number 1");
    } catch (e) {
        console.log("Critical error!");
    }
    try {
        var time2 = await timer(1000, "Number 2");
    } catch (e) {
        console.log("Critical error!");
    }
}

asyncDemo();
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 5

Ansync/Await取决于承诺的工作.所以你的函数需要返回一个promise.例如:

let timer = function(time, message) {
    return new Promise((resolve, reject) =>{
            setTimeout((time) => {
                console.log(`ALERT: ${message}`);
                resolve()
            }, time);

    }) 
}
Run Code Online (Sandbox Code Playgroud)