我正在開發Node.js中的系統,情況是這樣的:我有一個承諾,返回我一個Id列表,並在該承諾(然後)的回報我調用另一種方法需要爲第一個方法中返回的每個項目執行查詢。返回承諾與每個
這樣做的最好方法是什麼?
我的代碼是這樣的:
checkLastPosition(list) {
let returnList = new Array();
var actualDate = new Date();
list.forEach(function (item) {
return new Promise((resolve, reject) => {
pool.getConnection(function (err, connection) {
if (err)
reject(err);
let sql = ' select * from posicao loc';
sql += ' where veiculoid = ?';
sql += ' and loc.dataHora = (select max(dataHora) from posicao where veiculoId = loc.veiculoId)';
sql += ' order by loc.veiculoid, datahora desc';
connection.query(sql, item.veiculoid, function (err, rows) {
connection.release();
if (err)
reject(err);
resolve(rows[0]);
});
});
}).then(result => {
if (!result) {
returnList.push(item.veiculoId);
} else {
if (new Date(result.dataHora.toLocaleString()) <= actualDate.setMinutes(actualDate.getMinutes() - 10)) {
returnList.push(item.veiculoId);
}
}
});
}, this);
}
使用'map'而不是'forEach',並將'Promise.all'應用於結果數組中。 – Bergi
我該怎麼做? –