快递js - 异步待定

时间:2017-01-09 16:00:55

标签: node.js express node-async

我正在尝试从多个选项中查看返回数据,我正在使用async.parallel,但在控制台中显示Promise {<pending>}。 我需要var async = require('async');

这是我第一次尝试使用它,我做错了什么?

 new(req, res)
  {
    async.parallel(
    {
      one: function(callback) {

        callback(null, request.query("SELECT * FROM table1 where ref like '90%'"));
      },
      two: function(callback) {

        callback(null, request.query("SELECT * FROM table2 where ref like 'K%'"));

      }
    }, function(err, results)
    {
      console.log("RESULT:");
      console.log(err);

      return res.render('view-1', {"one": results.one, "two": results.two});
    });
  }

谢谢

1 个答案:

答案 0 :(得分:0)

在黑暗中拍摄:尝试从回调更改为Promises

var request1 = new request.query("SELECT * FROM table1 where ref like '90%'");
var request2 = new request.query("SELECT * FROM table2 where ref like 'K%'");

return Promise.all([request1, request2]).then(function(listOfResults) {
    return res.render(...);
}).catch(function(err) {
    // ... query error checks 
});

只有当两个查询都成功并且结果列表与查询的顺序相同时,才会触发Promise.all。

如果您没有使用ES6,那么您可以像这样导入Promise

var Promise = require('bluebird');