【发布时间】:2023-03-29 05:50:01
【问题描述】:
我想将满足某个条件的所有值推送到一个数组中,然后返回这个数组。这是我的代码
exports.getNearbyPosts = function (myLat, myLng){
var query = firebase.database().ref("posts/").orderByKey();
var listOfItems = [];
query.once("value")
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
var childData = childSnapshot.val();
var dist = getDistanceBetweenCoord(childData.lat, childData.lng, myLat, myLng);
if(dist < 10239820938502){
listOfItems.push(childSnapshot);
}
});
});
return listOfItems;
}
但是,由于 forEach 是异步的,而且似乎我不能在 forEach 上使用回调,所以我返回的 listOfItems 将只是一个空数组。我也尝试过“.then”,但它只会让我在“.then”中做更多的事情,我想将此数组作为变量返回给代码的其他部分。 forEach 执行后如何返回正确的数组?
【问题讨论】:
标签: javascript firebase asynchronous firebase-realtime-database