我正在尝试从多个选项中查看返回数据,我正在使用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});
});
}
谢谢
答案 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');