2017-01-09 4 views
0

Я пытаюсь вернуть данные для просмотра из нескольких выборок, и я использую async.parallel, но в консоли покажу мне Promise {<pending>}. Мне нужен var async = require('async');Express js - async pending

Это первый раз, когда я пытаюсь использовать его, что я делаю неправильно?

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

Как я могу это сделать ? спасибо @ R.Gulbrandsen – user3242861

+0

request.query, в какой библиотеке вы используете? –

ответ

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');