javascript - Node.js 异步函数未被识别为有效的异步函数

标签 javascript node.js asynchronous async-await

我有这两个功能

async function movieExists(movie){
        return new Promise((resolve, reject) => {
            const sql = '...';

            con.query(sql, (err,result,fields) => {
                if(err)
                    throw err;
                else if(!result[0])
                    reject("Error");
                else
                    resolve(result[0].total);
            })
        })
}
async function addMovie(movie){
        return new Promise((resolve, reject) => {
            const sql = '...';
            const exists = await movieExists(movie); //Error on this line

            if(exists == 0){
                con.query(sql, (err,result,fields) => {
                    if(err)
                        reject("Error");
                    else   
                        resolve("Success");
                })
            }else
                resolve("Movie already exists");
        })
}

错误: 语法错误:await 仅在异步函数中有效

Node 版本 -> v10.16.0

**如果您对代码本身有任何建议,我很高兴听到它们。

最佳答案

await 关键字直接位于您传递给 new Promise() 的函数内部,该函数不是异步的。

尝试将其移到该函数之外,如下所示:

async function addMovie(movie){
  const exists = await movieExists(movie);
  return new Promise((resolve, reject) => {
    const sql = '...';
    // ...
  })
}

关于javascript - Node.js 异步函数未被识别为有效的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60842164/

相关文章:

asp.net - WebApi2 何时使用 OnAuthorizationAsync 与 OnAuthorization

javascript - 使用 extjs 异步加载 JavaScript

javascript - 在两个任务之间添加延迟并获得意外的执行顺序

javascript - 是否使用 Ajaxify?

javascript - 重叠的日期框

javascript - NodeJS 与 connect-busboy 发生错误, "TypeError: Cannot call method ' 未定义”

javascript - 如何创建视频文件的 blob

javascript - 在 ("message"上定义 Socket.io 的最有效方法)处理程序

javascript - 循环浏览 jQuery 灯箱照片

javascript - 如果 Google Analytics 出现故障,我该如何保持我的网站正常运行?