Javascript 如何从firebase存储中获取react.js的异步映像数据?
请告知,如何将数据放入队列返回数组。因为组件渲染比firebase发送数据快 此操作的代码片段(redux的)Javascript 如何从firebase存储中获取react.js的异步映像数据?,javascript,reactjs,firebase,asynchronous,firebase-realtime-database,Javascript,Reactjs,Firebase,Asynchronous,Firebase Realtime Database,请告知,如何将数据放入队列返回数组。因为组件渲染比firebase发送数据快 此操作的代码片段(redux的) }您需要等待所有快照响应,如下所示: //样板文件开始--- 函数getImage(thumb){ 返回新承诺((解决)=>{ setTimeout(()=>resolve(thumb+'url'),Math.random()*500); }); } 函数子项(键、值){ this.key=key; 这个值=值; } Child.prototype.val=函数(){ 返回此.val
}您需要等待所有快照响应,如下所示:
//样板文件开始---
函数getImage(thumb){
返回新承诺((解决)=>{
setTimeout(()=>resolve(thumb+'url'),Math.random()*500);
});
}
函数子项(键、值){
this.key=key;
这个值=值;
}
Child.prototype.val=函数(){
返回此.value;
}
函数receivePosts(键、子数据){
返回{key,childData};
}
职能分派(行动){
控制台日志(操作);
}
捕捉=[
新子项('key1',{thumb:'thumb1'}),
新子项('key2',{thumb:'thumb2'}),
新子项('key3',{thumb:'thumb3'}),
新子项('key4',{thumb:'thumb4'}),
新子项('key5',{thumb:'thumb5'}),
新子项('key6',{thumb:'thumb6'}),
新子项('key7',{thumb:'thumb7'}),
新子项('key8',{thumb:'thumb8'})
];
//样板末端---
功能内置选项卡后退(键){
返回Promise.all(snap.map)(函数(子函数){
返回getImage(child.val().thumb)。然后((url)=>{
返回{
“id”:child.key,
“url”:url,
…child.val()
}
});
})).然后((儿童数据)=>{
派送(接收站(钥匙、儿童数据))
});
}
内藏禁忌(“钥匙”)代码>您需要等待所有快照响应,如下所示:
//样板文件开始---
函数getImage(thumb){
返回新承诺((解决)=>{
setTimeout(()=>resolve(thumb+'url'),Math.random()*500);
});
}
函数子项(键、值){
this.key=key;
这个值=值;
}
Child.prototype.val=函数(){
返回此.value;
}
函数receivePosts(键、子数据){
返回{key,childData};
}
职能分派(行动){
控制台日志(操作);
}
捕捉=[
新子项('key1',{thumb:'thumb1'}),
新子项('key2',{thumb:'thumb2'}),
新子项('key3',{thumb:'thumb3'}),
新子项('key4',{thumb:'thumb4'}),
新子项('key5',{thumb:'thumb5'}),
新子项('key6',{thumb:'thumb6'}),
新子项('key7',{thumb:'thumb7'}),
新子项('key8',{thumb:'thumb8'})
];
//样板末端---
功能内置选项卡后退(键){
返回Promise.all(snap.map)(函数(子函数){
返回getImage(child.val().thumb)。然后((url)=>{
返回{
“id”:child.key,
“url”:url,
…child.val()
}
});
})).然后((儿童数据)=>{
派送(接收站(钥匙、儿童数据))
});
}
内藏禁忌(“钥匙”)代码>
function fetchPosts(key) {
return dispatch => {
dispatch(requestPosts(key))
return database.ref('article/').once('value', snap => {
let childData = []
snap.forEach(function(child) {
getImage(child.val().thumb).then((url) => {
console.log(url)
return {
"id": child.key,
"url": url,
...child.val()
}
}).then((array) => {
console.log(array)
childData.push(array)
})
})
dispatch(receivePosts(key, childData))
})
.catch((error) => {
console.log(error)
dispatch(receivePosts(error))
})
}