最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在回调nodejs中访问变量?

IT培训 admin 1浏览 0评论

如何在回调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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论