-1
接收函數外的空數組?函數外的空數組
var triggerImageQuery = function(start, length,callback) {
var feedData = [];
var feedInfo = result.rows[start];
var imgQuery = pgFormat("select * from feedImages where feedId=%L",feedInfo.feedid);
model.client.query(imgQuery,function(err,result){
if(result.rows.length > 0){
var imgArr =[];
for(var j=0;j<result.rows.length;j++){
var image = "http://"+config.host+":"+config.port+"/"+result.rows[j].imageurl;
imgArr.push(image);
}
feedData.push(feedInfo);
feedData.push(imgArr);
}
else{
feedData.push(feedInfo);
}
console.log(feedData) // prints data correctly
});
console.log(feedData) // here data gets empty?
if(start < length) {
start++;
triggerImageQuery(start, length-1);
}
callback(feedData); // unable to callback here because of empty array`
}
triggerImageQuery(0, result.rows.length,function(result){
res.json(result); // `result is empty`
});
即使我已經嘗試聲明var feedData = [];在頂部,但沒有用。
並且還嘗試了model.client.query中的回調,但存在TypeError之類的錯誤:回調函數不是函數。
您的'model.client.query'調用是異步的 - 所以您的空日誌在查詢完成之前執行。您需要完成該通話回調中的所有工作。 – tymeJV
可能的重複[如何返回來自異步調用的響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –
,甚至我已經測試了model.client.query中的回調(feedData),它拋出了像TypeError這樣的錯誤:回調不是函數 – karthik