回调返回空数组js

时间:2017-02-22 15:48:33

标签: javascript sql sql-server node.js callback

这是在sql查询中调用的函数。 所有查询完成后我才需要返回回调。 但它返回一个空数组 毕竟如何用数据返回数组? `

function getUserSales(days, callback){
  getUserByLastLoginDay(days, function (users) {
    var userArray = [];
    _.each(users, function (user) {
      getMostFavoredCat(user.id, function (cat) {
        if(!cat || cat.length == 0){
         return false;
        } else {
          user.mostFavoredCat = takeMostRepeatingObj(cat);
        }
        getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) {
          user.sales = sales;
          userArray.push(user)
        })
      })
    })
    callback(userArray);
  })
}

`

2 个答案:

答案 0 :(得分:1)

回调函数第一个参数始终是错误

callback(null,userArray)

您可以使用async.js来获得更好的控制流程

npm i async --save

const async = require('async');

function getUserSales(days, callback){
  getUserByLastLoginDay(days, function (users) {
    var userArray = [];
    async.each(users, function (user, cb) {
      getMostFavoredCat(user.id, function (cat) {
        if(!cat || cat.length == 0){
         return false;
        } else {
          user.mostFavoredCat = takeMostRepeatingObj(cat);
        }
        getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) {
          user.sales = sales;
          userArray.push(user)
          cb();
        })
      })
    }, (err) => {
        if (err) {
            return callback(err);
        } else {
            callback(null, userArray);
        }
    })
  })
}

答案 1 :(得分:0)

我认为它会起作用:

function getUserSales(days, callback){
 getUserByLastLoginDay(days, function (users) {
   var userArray = [];
   _.each(users, function (user) {
      getMostFavoredCat(user.id, function (cat) {
       if(!cat || cat.length == 0){
       return false;
    } else {
      user.mostFavoredCat = takeMostRepeatingObj(cat);
    }
    getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) {
      user.sales = sales;
      userArray.push(user)
    })
  })
callback(userArray);
})
})
}