如何在回调nodejs中访问变量?
虽然我已经在顶部创建了新对象,但是我无法获取meal对象中的值可以告诉哪个是回调函数中最好的过程访问变量
var meals = new Object();
passObj.data = _.map(passObj.data, (x)=> {
x.mealImageUrl = !_.isNull(x.image_url) ? `${config.image_path}${x.image_url}` : x.image;
dbHelpder.query(`select * from meals where meal_category = ${x.category_id}`,(error,result)=>{
meals = x.result;
passObj.total = 555
});
return x;
});
回答如下:
你需要在回调函数中再次使用callback
。 :)你正在做异步的事情,这意味着,没有序列代码。 (至少,我记住这一点,不知道别人怎么想这个。)所以,代码应该是:
function somehow(callback) { // you get the result from callback
var meals = new Object();
passObj.data = _.map(passObj.data, (x)=> {
dbHelpder.query(`select * from meals where meal_category = ${x.category_id}`,(error,result)=>{
meals = x.result;
passObj.total = 555;
callback(meals); // Here you get the result
});
}
return x;
}
所以,当你打算使用这个功能时,它应该是
function afterMeals(resultMeals) {
// do something on the meals
}
somehow(afterMeals);
使用其他一些技术可以使它有点清楚(如promise
),但你实际上无法避免callback
。
如何在回调nodejs中访问变量?
虽然我已经在顶部创建了新对象,但是我无法获取meal对象中的值可以告诉哪个是回调函数中最好的过程访问变量
var meals = new Object();
passObj.data = _.map(passObj.data, (x)=> {
x.mealImageUrl = !_.isNull(x.image_url) ? `${config.image_path}${x.image_url}` : x.image;
dbHelpder.query(`select * from meals where meal_category = ${x.category_id}`,(error,result)=>{
meals = x.result;
passObj.total = 555
});
return x;
});
回答如下:
你需要在回调函数中再次使用callback
。 :)你正在做异步的事情,这意味着,没有序列代码。 (至少,我记住这一点,不知道别人怎么想这个。)所以,代码应该是:
function somehow(callback) { // you get the result from callback
var meals = new Object();
passObj.data = _.map(passObj.data, (x)=> {
dbHelpder.query(`select * from meals where meal_category = ${x.category_id}`,(error,result)=>{
meals = x.result;
passObj.total = 555;
callback(meals); // Here you get the result
});
}
return x;
}
所以,当你打算使用这个功能时,它应该是
function afterMeals(resultMeals) {
// do something on the meals
}
somehow(afterMeals);
使用其他一些技术可以使它有点清楚(如promise
),但你实际上无法避免callback
。