我目前正在构建一个聊天应用程序,其中包含个人资料图片(存储在firebase存储中)以及用户数据和文本(存储在firebase数据库中)。我试图遍历消息数据库,并在其旁边显示消息数据以及用户的个人资料图片。我目前正在使用以下代码:
var theDataRef = new Firebase('https://my-chat.firebaseio.com');
theDataRef.orderByChild("timestamp").limitToLast(25).once('value', function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var message = childSnapshot.val();
var email = message.email;
var stringEmail = email.split('.').join('-');
var storage = firebase.storage();
var storageRef = storage.ref();
var starsRef = storageRef.child('images/' + stringEmail + '.jpg');
starsRef.getDownloadURL().then(function (url) {
displaytableRow(message.name, message.text, url);
}).catch(function (error) {
displaytableRow(message.name, message.text, "images/dog.jpg");
});
});
});
该代码可在设备上正常运行,但仅能使用一半时间。我认为这与数据库调用比从存储中检索图像的速度更快有关。
我的问题是,这是从数据库调用中迭代地从存储中获取图像的最佳方法吗?如果数据库调用太快又有问题,我该如何使此函数等待图像下载在移至下一条记录之前?