async的异步执行函数callback回调怎么输出?
新手一枚,刚接触node和express。 我有两个函数promise1,promise2是从数据库查询一些数据,我想异步执行他们,当这两个函数执行完成后组装成一个json输出。 现在运行的时候函数是执行完成了,但是输出的data是两个function,是我函数中输出方式不对嘛?请各位指点一下,谢谢!
function promise1(){
var query = new AV.Query('AdminCard');
query.equalTo('isDel',false);
query.find().then(function (results) {
console.log('ac:'+results.length);
return results;
}, function (error) {
// 异常处理
});
}
function promise2(){
var query = new AV.Query('Product');
query.equalTo('isDel',false);
query.find().then(function (results) {
console.log('p:'+results.length);
return results;
}, function (error) {
// 异常处理
deferred.reject(error);
});
}
async.parallel([
function (callback){
callback(null,promise1());
},
function (callback){
callback(null,promise2());
}],function(err,results){
var data=[];
data.push(results);
var result={
status:200,
message:"",
data:data,
server_time:new Date()
}
res.jsonp(result);
});
});
2 回复
你的理解错了,callback应该是要在查询数据库的回调里面执行。
function promise1(callback){
var query = new AV.Query('AdminCard');
query.equalTo('isDel',false);
query.find().then(function (results) {
console.log('ac:'+results.length);
return callback(null,results);
}, function (error) {
// 异常处理
return callback(error)
});
}
function promise2(callback){
var query = new AV.Query('Product');
query.equalTo('isDel',false);
query.find().then(function (results) {
console.log('p:'+results.length);
return callback(null,results);
}, function (error) {
// 异常处理
deferred.reject(error);
return callback(error)
});
}
async.parallel([
function (callback){
promise1(callback)
},
function (callback){
promise2(callback)
}],function(err,results){
var data=[];
data.push(results);
var result={
status:200,
message:"",
data:data,
server_time:new Date()
}
res.jsonp(result);
});
});
@foora 万分感谢!