exports.index = function(req, res, next) {
var result = {};
var getData = [
{
shcema: Car,
example: 'car_list'
},
{
shcema: Brand,
example: 'brands'
}
]
async.map(getData, function(item, callback){
// 给result赋值
// ……
}, function(err,r){
// 最终回调渲染无效
res.render('index', result);
})
};
如题:在回调里面render界面无效,在map函数下面又拿不到result的值
大家讲道理2017-04-17 13:49:59
function(item, callback){
// 是不是这个函数里面忘记调用callbacks?
}
callback一定要去調用,否則下面的function(err, r)就永遠不會執行。
高洛峰2017-04-17 13:49:59
var getData = [{
shcema: 'Car',
example: 'car_list'
}, {
shcema: 'Brand',
example: 'brands'
}
]
async.map(getData, (item, callback) => {
setTimeout(function() {
console.log(item.shcema);
callback(null, [item.shcema, item.example]);
}, 1000);
}, (err,r) => {
console.log(r); // [ [ 'Car', 'car_list' ], [ 'Brand', 'brands' ] ]
});
map會將所有的結果將匯總到最終的callback裡
黄舟2017-04-17 13:49:59
正確呼叫:
async.map(getData, function(item, callback){
item.schema.find({},function(err, res){
callback(null, data[item.examples] = res || []);
})
},function(err,result){
if(err){
console.log(err);
}
res.render('index', data);
})