await演算子を使用する必要があると考えていますが、次の2つの場合の違いは何ですか。
1
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();
}
結果に違いはないと思いますが、promiseが返されるため、async awaitを使用する必要はまったくないと思います。また、async関数内でupdateOne関数を呼び出すときにawait演算子を使用するだけで済みます。
Oyverusが答えたように、結果に違いはありませんが、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(...)
私は可能な場合はプレーンリターンを使用する傾向があり/*async*/
ますが、ドキュメント化のためにコードにを残します。
/*async*/ write(){
return this.db.write()
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加