【发布时间】:2018-08-08 18:27:07
【问题描述】:
我有一个简单的 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});
循环中的代码需要时间来执行,因此在循环有时间完成之前发送结果,因此我的数组的值不正确。
我查了一下,但找不到对这个案例的正确回应。我想知道我的代码在继续之前等待循环完全执行的可能性是什么?
谢谢,非常感谢任何帮助
【问题讨论】:
-
你应该使用承诺。
-
我看不到在循环完成之前结果会被“发送”。除非您遗漏了一些重要信息。
-
循环使用异步代码吗?
-
您必须向我们展示您的实际代码,我们才能在这里为您提供帮助。到目前为止,您显示的代码是同步的,因此所有代码都在
for循环完成之前执行。如果您在循环中确实有异步代码,那么您需要将其展示给我们,我们可以建议处理它的最佳方法。 -
我已经更新了我的代码。我正在 for 循环中进行 db 调用,这解释了为什么代码是异步的。
标签: javascript node.js loops asynchronous promise