gpt4 book ai didi

node.js - 定义异步函数时的 async/await Node v9 "unexpected token function"

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:30 26 4
gpt4 key购买 nike

我想在我的应用程序中使用 async/await,主要是为了查询我的数据库

我有这个功能:

async function getVariables() {

var id = await Service.getIdByName('JollyClick')

console.log(id)

}

应该称之为:

serviceSchema.statics.getIdByName = async function getIdByName (serviceName) {

this.findOne({name :serviceName }).exec().then(function(service){
return service._id
})
}

但我收到错误:

async function getVariables() {
^^^^^^^^

SyntaxError: Unexpected token function

我正在使用 Node v9

请帮忙!

最佳答案

我认为您不需要 getIdByName 函数上的异步,例如

serviceSchema.statics.getIdByName = function getIdByName (serviceName) {

this.findOne({name :serviceName }).exec().then(function(service){
return service._id
})
}

没问题。

不过,我认为这不是您错误的根源。你的代码看起来没问题,它在 Node 8.9.4 上为我运行,你的 IDE 会做一些烦人的事情吗?我见过 WebStorm 在您没有选择正确的 JavaScript 版本时执行此操作。

当然,当您使用await 调用函数时,您通常是使用返回promise 的函数来执行此操作。

所以我也会像这样更改 getIdByName:

serviceSchema.statics.getIdByName = function getIdByName (serviceName) {

return this.findOne({name :serviceName }).exec().then(function(service){
return service._id;
})
}

这使 promise 链保持完整。

语法:

异步函数 getVariables() {

无论如何都是正确的。

如果您的 IDE 针对旧版本的 JavaScript,它可能不允许您使用 async 关键字。

尝试这个 fiddle 来查看正在使用的 async 关键字:

https://jsfiddle.net/u453mdkb/3/

关于node.js - 定义异步函数时的 async/await Node v9 "unexpected token function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com