等待词实际上并不等待是怎么回事?

时间:2021-07-29 15:08:50

标签: javascript node.js asynchronous async-await google-calendar-api

我编写这段代码是为了查询谷歌日历 API 并返回结果。

为了简单起见,我将变量 x 插入到函数中。根据我的直觉,x 应该打印为 1,但它总是打印为 1。

最初的问题是日历的结果总是未定义,尽管如果我在异步调用中打印它,它会被正确打印。

我做错了什么,请问如何解决?

async askCal() {
        let x = 0;
        await this.calendar.freebusy.query(this.auth, (err, response) => {
            x = 1;
            if (err) { console.log('error: ' + err) }
        })
        console.log({ x })
    }

1 个答案:

答案 0 :(得分:2)

你在回调和等待/异步之间混合,

     async askCal() {
            try{
             let x = 0;    
             const response = await this.calendar.freebusy.query(this.auth);
             x = 1;           
             console.log({ x });
          }catch(e){console.error(e.message);}
         
        }