Javascript 异步等待不使用两个函数
我有一个函数,可以访问数据库来确定每种成分的总排放量。然后将该值保存到对象和数据库中。但是,在计算排放总量之前将保存对象Javascript 异步等待不使用两个函数,javascript,node.js,Javascript,Node.js,我有一个函数,可以访问数据库来确定每种成分的总排放量。然后将该值保存到对象和数据库中。但是,在计算排放总量之前将保存对象 var emission_total = 0; async function getEmissionTotal() { for (var x in ingredients) { Emission.findOne({food_name:ingredients[x]}).then(result => {
var emission_total = 0;
async function getEmissionTotal() {
for (var x in ingredients) {
Emission.findOne({food_name:ingredients[x]}).then(result => {
console.log(result);
if (result == null) {
emission_total += 0;
console.log(emission_total);
}
else {
emission_total += 0.7;
console.log(emission_total);
}
})
.catch(err => console.log(err));
}
return;
}
async function next() {
await getEmissionTotal();
const date = req.body.date;
const description = req.body.description;
const food_list = ingredients;
const photo = photo_link;
const nutrients = {
'calories': req.body.calories,
'fat': req.body.fat,
'sugar': req.body.sugar,
'carbs': req.body.carbs,
'cholesterol': req.body.cholesterol,
'protein': req.body.protein,
'emissions': emission_total
}
console.log(nutrients);
const newNutrition = new Nutrition({
date,
description,
photo,
nutrients,
food_list
});
console.log(newNutrition)
newNutrition.save()
.then(() => res.json('Nutrition added!'))
.catch(err => res.status(400).json('Error: ' + err));
}
next();
本质上,next()函数应该在异步函数getEmissionTotal()之后执行。
emissionTotal
需要放在getEmissionTotal方法中。此外,您不返回任何内容,也不等待结果
async function getEmissionTotal() {
let emission_total = 0;
for (var x in ingredients) {
try {
const result = await Emission.findOne({food_name:ingredients[x]});
console.log(result);
if (result == null) {
emission_total += 0;
console.log(emission_total);
} else {
emission_total += 0.7;
console.log(emission_total);
}
} catch(err) {
console.log(err);
}
}
return emission_total;
}
emission\u total
需要放在getEmissionTotal方法中。此外,您不返回任何内容,也不等待结果
async function getEmissionTotal() {
let emission_total = 0;
for (var x in ingredients) {
try {
const result = await Emission.findOne({food_name:ingredients[x]});
console.log(result);
if (result == null) {
emission_total += 0;
console.log(emission_total);
} else {
emission_total += 0.7;
console.log(emission_total);
}
} catch(err) {
console.log(err);
}
}
return emission_total;
}
getEmissionTotal()
不返回任何要等待的内容将emissiontotal
声明放入getEmissionTotal()
中,然后返回emissiontotal
。在next()
函数中,声明另一个变量const emissionTotal=wait getEmissionTotal()
getEmissionTotal()
不返回任何要等待的内容将emissionTotal
声明放入getEmissionTotal()
中,然后返回emissionTotal
。在next()
函数中,声明另一个变量const emissionTotal=wait getEmissionTotal()