callback空数组js

这里是在SQL查询调用的function。 只有在完成所有查询之后,我才需要返回callback。 但它返回一个空数组如何返回数组与数据毕竟? `

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函数的第一个参数总是出错

 callback(null,userArray) 

你可以使用async.js来获得更好的控制stream

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