[英]What are the possibilities when you need to wait for a loop to finish executing before continuing
我有一個簡單的 for 循環,如下所示:
var array = [];
for (var key in results) {
con.query('SELECT * FROM table WHERE id = ?', [results[key]], function (err, res, fie) {
array.push(res);
});
}
res.json({result: array});
循環中的代碼需要時間來執行,因此在循環有時間完成之前發送結果,因此我的數組的值不正確。
我查了一下,但找不到對此案的適當回應。 我想知道我的代碼在繼續之前等待循環完全執行的可能性是什么?
謝謝,非常感謝任何幫助
如果你從不讓 jfriend 知道你正在使用什么數據庫,這里有一些應該工作的東西
// a "promisified" con.query ... though, not sure what the `fie` argument is
// as it's not used, it wont matter
const queryP = (sql, ...args) =>
new Promise((resolve, reject) =>
con.query(sql, ...args, (err, res, fie) =>
err ? reject(err) : resolve(res)
)
);
現在,您的代碼可以編寫了
results // if results is an Object, use: Object.values(results) instead
.map(result => queryP('SELECT * FROM table WHERE id = ?', result))
.then(result => res.json({result}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.