我正在使用以Firebase为后盾的React。我正在使用异步firebase函数来获取我添加的文件的下载URL。此函数在for循环内运行多次,并保持所有同步,我使用'async'和'await'等待文件添加,然后再进入循环中的下一个条目。但是最后,我要填充的数组“上载”在整个循环完成后变为空。是不是因为等待在里面而没有用。如果没有,我该怎么办?
OnChanged
答案 0 :(得分:0)
使用for await ... of
语句,而不要使用其他任何用于循环的语句。这将使每次迭代中的promise都可以解决,然后再进行下一次。
// I guess from your code that you're iterating through a FileList? Could be an array or any sort of list.
for await (file of files) {
// ...
}
答案 1 :(得分:0)
问题在于forEach( ... )
不能await
来完成诺言:它会遍历您的条目并启动n个诺言,而在您{之前{ {1}}。我正在重写您的resolve
和函数调用,以使其以更加惯用的async / await样式起作用:
fs.collection("wall_posts").add(...)