async的异步执行函数callback回调怎么输出?
发布于 1 个月前 作者 panyunyi 279 次浏览 来自 问答

新手一枚,刚接触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);
    });
});
回到顶部