node.js - Loopback:如何在包含异步方法的 for 循环中收集数据?
问题描述
使用环回,我有一个简单的 for 循环,我在其中执行 findOne:
let my_data = [];
Orders.forEach(function(order,idx) {
let postalcode = order.toJSON().customer.postal_code;
let ps4 = postalcode.slice(0,4);
app.models.postalcode.findOne({where: {postal_code: parseInt(ps4)},include: ['depot']}, function (err, Postalcode) {
if (err) {
winston.error('Could not load postalcode %s due to error %s: ', ps4, err.message);
} else {
if (Postalcode) {
let depot = Postalcode.toJSON().depot;
if (!depot) {
//
} else {
let depot_city = depot.city;
if (cities_to_process.indexOf(depot_city) > -1) {
my_data.push(order);
} else {
}
}
} else {
winston.warn('Could not find postal code %s', ps4)
}
}
});
});
console.log(my_data);
在 for 循环之后,我想对 my_data 中收集的数据做一些事情。由于 findOne 似乎是异步的,这样做的首选方式是什么?
解决方案
您可以在 forEach 中创建新的承诺,例如:
let Y = X.forEach((item) => {
return new Promise((resolve, reject) => {
resolve('done')
})
})
Promise.all(y, callback)
推荐阅读
- python - 基于python中时间序列数据中的连续值计算活动
- excel - 如何在没有 Excel VBA 代码的情况下保存文件?
- python - 如何在字典中修改?
- python - Django 2.3内部get_absolute_url,找不到'post_detail'的反向
- npm - 如何从源代码构建 v4.4.0 的“FullCalendar”?
- python - 如何从另一行和列的 idxmin 获取列值?
- python - 使用 brew 安装 openssl 后 Flask 无法运行错误
- docker-compose - 设置 gRPC DB-less API 网关:415 Unsupported Media Type
- get - Pouch DB - 创建的数据库 - 保存在 _id 下 - 尝试检索以后的更改数据并重新保存
- azure-cosmosdb - 如果您尝试在强一致性 cosmos DB 中写入后立即读取数据,会发生什么情况?