javascript - 回调返回空数组js

标签 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);
  })
}

`

最佳答案

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

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);
        }
    })
  })
}

关于javascript - 回调返回空数组js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396163/

相关文章:

javascript - 我将所有内容都保存在外部 .js 文件中。但并非所有功能都在每个页面上使用。这会影响速度吗?

javascript - lambda : How to modify function parameters without `R.wrap` ?

mysql - 按 2 个参数搜索

sql-server - 我对 SSIS 的疑问合理吗?

javascript - 点击按钮后 Cypress 等待 API

javascript - 将函数数组作为参数传递

mysql - 如何将表中的字段添加到 SELECT 的结果中以创建新 View ?

sql - 如何停止 golang gc 并手动触发它?

sql - 如何使 SSRS 参数 = 来自另一个数据集的字段

sql - 在 SQL Server 中分配行号,但按值分组