【发布时间】:2019-02-05 03:39:52
【问题描述】:
import Firebase from './Firebase'
import videoManager from './videoManage';
async function getAllDatabaseLocations() {
await let ref = Firebase.database().ref("locations")
var user_locations = [];
ref.on("value", function (snapshot) {
snapshot.forEach(function (datas) {
const data = datas.val();
vid_manage = new videoManager(data.videourl);
vid_ref = vid_manage.getLocationVideoUrl();
vid_ref.getDownloadURL().then(function (url) {
videourl = url;
}).catch(function (error) {
});
let lokation = data.lokation;
let videourl = data.videourl;
let openinghours = data.openinghours;
let links = data.links;
let Lokationer = {
lokation: lokation,
videoUrl: videourl,
openingshours: openinghours,
links: links
};
console.log("Location objects are: ", Lokationer);
user_locations.push(Lokationer);
// location_obj.push(Lokationer);
});
});
return user_locations;
}
export default getAllDatabaseLocations;
这个方法总是返回一个空数组,即使循环内的控制台按我预期的那样打印?如何使用 async 和 await 属性来返回一个包含所有 Lokationer 对象的数组。
【问题讨论】:
-
等待将在异步函数或返回承诺的函数之前进行。我不能说这是否适用于您的 Firebase 呼叫,但如果是,您会将 await 放在分配中 = 的右侧,就在您想要等待结果的呼叫之前。所以
let ref = await Firebase.[...]