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