异步/等待无法正常工作

时间:2017-07-26 03:00:55

标签: 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();

1 个答案:

答案 0 :(得分:5)

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

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

    }) 
}