2017-01-09 117 views
0

我試圖返回數據以查看多個選擇,我使用的是async.parallel但在控制檯中顯示我的承諾{<pending>}。 我需要var async = require('async');表示js-異步掛起

這是我第一次嘗試使用它,我做錯了什麼?

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

射擊:嘗試從回調改變承諾

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,那麼你可以導入無極這樣

var Promise = require('bluebird');