我使用异步来执行第二次数据库查询。必须将该查询的结果作为对象添加到第一个查询中。
问题是当异步完成时,数据没有改变,因为他已经发送了未改变的数据。有没有办法等待异步完成?
我使用了超时,但数据的大小未知,因此这不是一个好的解决方案。
到目前为止的代码:
Integer
答案 0 :(得分:1)
eachSeries
采用的功能基本上是"我已完成"功能:
connection.query('SELECT * FROM SENSORS', function(err,rows) {
if(rows.length !== 0) {
DEBUG_WRITE('sensor/','GET',200);
async.eachSeries(rows, function(row, callback) {
connection.query('SELECT * FROM LOCATIONS WHERE LocationID=?',row.LocationID, function (error, result) {
row.location = result;
callback(null,rows);
});
}, function(err){ //treat this as "i'm done iterating"
// if any of the iterations produced an error, err will equal that error
if(err) {
//do something with the error
res.status(500);
return res.send(err);
}
res.status(200);
return res.send(rows);
});
} else {
DEBUG_WRITE('sensor','GET',404);
res.status(404);
res.send({status: "No entries found"});
}
});
See here - 它与each
相同,因此function
是相同的