gpt4 book ai didi

javascript - 自动执行异步函数

转载 作者:可可西里 更新时间:2023-11-01 09:56:36 25 4
gpt4 key购买 nike

下面的代码完美运行:

const Course = mongoose.model('Course',courseSchema)
async function foo(){

const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
})

const result = await nodeCourse.save()
console.log(result)
}
foo()

但是这个给出了一个错误:

const Course = mongoose.model('Course',courseSchema)
(async ()=>{

const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
})

const result = await nodeCourse.save()
console.log(result)
})()

错误:

ObjectParameterError: Parameter "obj" to Document() must be an object, got async function

那么如何自动执行异步函数呢?

提前致谢

最佳答案

这就是为什么当您不能 100% 确定 ASI(自动分号插入)的工作原理时应该使用分号。 (即使您了解 ASI,您也可能不应该依赖它,因为它很容易搞砸)

在线

const Course = mongoose.model('Course',courseSchema)
(async ()=>{
// ...
})();

因为 ('Course',courseSchema) 之后没有分号,并且因为下一行以 ( 开头,所以解释器会按如下方式解释您的代码:

const Course = mongoose.model('Course',courseSchema)(async ()=>{

也就是说,您正在使用 async 函数(和然后尝试调用结果)。

改用分号,而不是依赖自动分号插入:

const Course = mongoose.model('Course',courseSchema);
(async ()=>{
const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
});
const result = await nodeCourse.save();
console.log(result);
})();

关于javascript - 自动执行异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52675041/

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