我有一系列邮政编码,如下所示:
zipCodes = [1234, 5678, 1357, 2468];
现在,我需要根据这些邮政编码获取位置。我这样做如下:
locations = [];
zipCodes.forEach(function(zip) {
Addresses.findOne({ zipCode: zip }, function(error, address) {
//assuming it is a success
locations.push(address);
}
});
//data which works on locations
问题是在位置上工作的数据(最终)没有所有的地址 - 至少在被访问时是这样。如果我延迟 5 到 10 秒(在 zipCodes.forEach() 之后使用 setTimeOut),则位置包含所有地址。
我怀疑的原因是push()
进入位置是异步发生的,而不是最终访问位置时发生的时间。
在不使用 setTimeOut() 的情况下,如何确保所有地址都填写在位置中?