Javascript:SyntaxError:等待仅在异步函数中有效

用户名

我在Sequelize.js上的Node 8上

尝试使用时出现以下错误await

SyntaxError: await is only valid in async function

码:

async function addEvent(req, callback) {
    var db = req.app.get('db');
    var event = req.body.event

    db.App.findOne({
        where: {
            owner_id: req.user_id,
        }
    }).then((app) => {

                let promise = new Promise((resolve, reject) => {
                    setTimeout(() => resolve("done!"), 6000)

                })

               // I get an error at this point 
               let result = await promise;

               // let result = await promise;
               //              ^^^^^
               // SyntaxError: await is only valid in async function
            }
    })
}

出现以下错误:

               let result = await promise;
                            ^^^^^
               SyntaxError: await is only valid in async function

我究竟做错了什么?

那将是烧瓶

addEventasync..await原始承诺的混合await是的语法糖then是一个或另一个。混合会导致错误的控制流;db.App.findOne(...).then(...)许诺没有链接或返回,因此无法从外部获得addEvent

它应该是:

async function addEvent(req, callback) {
    var db = req.app.get('db');
    var event = req.body.event

    const app = await db.App.findOne({
        where: {
            owner_id: req.user_id,
        }
    });

    let promise = new Promise((resolve, reject) => {
        setTimeout(() => resolve("done!"), 6000)
    })

    let result = await promise;
}

通常,普通回调不应与promise混合使用。callback参数指示使用的APIaddEvent可能也需要被告知。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

module.exports SyntaxError:等待仅在异步函数中有效

module.exports SyntaxError:等待仅在异步函数中有效

For 循环 - SyntaxError: await 仅在异步函数中有效

等待仅在异步函数中有效,同时我已经在函数中放置了“异步”

SyntaxError:await 仅在带有 Apify Metamorph 的异步函数中有效

await 总是抛出 SyntaxError: await 仅在 sequelize 的异步函数中有效

Sails.js SyntaxError:await 仅在异步函数中有效

ASYNC / AWAIT SyntaxError:await 仅在异步函数和模块的顶级主体中有效

等待仅在异步功能中有效

等待仅在异步功能中有效

等待仅在异步功能中有效

NodeJs等待仅在异步功能中有效

错误:等待仅在异步功能中有效

即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

for循环中的“ await仅在异步函数中有效”

`SyntaxError:await 仅在异步函数中有效`,同时尝试在 node rest api 中注册用户

在等待时出错,该等待仅在使用异步函数时对异步函数有效

为什么该函数调用抛出“等待仅在异步函数中有效”的语法错误,即使该函数是异步的?

给出 await 的异步函数仅在异步函数中有效

“await 仅在异步函数中有效”,而它是一个异步函数

带伪造者的Web爬网循环:“等待仅在异步功能中有效”

discord.js机器人等待仅在异步功能中有效

语法错误:等待仅在异步功能中有效。无法更正

未捕获的 SyntaxError:await 仅在 async 函数中的 async 函数中有效

Google Cloud / Firebase 函数:await 仅在异步函数中有效

SyntaxError:super()仅在派生类构造函数中有效

SyntaxError:“await”仅在“async”函数中有效 - 需要帮助

SyntaxError:await 仅在 async 函数中有效,但 async 已包含在内

NodeJS Express应用程序等待仅在异步功能中有效,但这显然是异步功能吗?