gpt4 book ai didi

javascript - 带等待或不带返回之间有区别吗

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:32 24 4
gpt4 key购买 nike

我只是在考虑我们需要使用 await 运算符,以及以下两种情况之间的区别。

一个

public async updateOne(Model, doc, errorMsg?){
return await Model.findOneAndUpdate({'_id': doc._id}, {'$set': doc}, {upsert:true, new: true}).lean().exec();
}

两个

public updateOne(Model, doc, errorMsg?){
return Model.findOneAndUpdate({'_id': doc._id}, {'$set': doc}, {upsert:true, new: true}).lean().exec();
}

我觉得结果没有区别,但是我觉得完全没有必要使用async await,因为会返回一个promise,我们只需要在一个内部调用updateOne函数的时候使用await操作符异步功能。

最佳答案

作为Oyverus answered ,结果没有区别,但是使用 async 函数会创建另一个 Promise,我为每种情况添加了一些粗略的示例。

使用 async updateOne(){ return await Model.findOneAndUpdate(...) } 导致 Promise 代码类似于:

return new Promise((resolve, reject) => {
Model.findOneAndUpdate(...).then(resolve, reject)
})

然后 async updateOne(){ return Model.findOneAndUpdate(...) } 是:

return new Promise(resolve => resolve(Model.findOneAndUpdate(...))

一个普通的 updateOne(){ return Model.findOneAndUpdate(...) } 是:

return Model.findOneAndUpdate(...)

我倾向于在可能的情况下使用简单的 return,但出于文档目的在代码中保留 /*async*/

/*async*/ write(){
return this.db.write()
}

关于javascript - 带等待或不带返回之间有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47233557/

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