我想上传多张图片到Firebase,获取每张图片的URL,我使用了一个任务,目前为止一切正常,但是怎么才能在forEach任务完成后才读出带有URL的列表呢?目前的情况是列表只在日志中输出,为空,然后跳转到forEach:
Tasks.whenAllSuccess<UploadTask>(tasks).addOnSuccessListener {
val downloadUrls = mutableListOf<String>()
tasks.forEach {
it.result.metadata!!.reference!!.downloadUrl.addOnSuccessListener { snap->
downloadUrls.add(snap.toString())
Log.e("Downloadable Image URL",snap.toString())
}
}
//The list here is empty
Log.d("List with URLs",downloadUrls.toString())
progressDialog.dismiss()
}
1条答案
按热度按时间4nkexdtk1#
当你打电话的时候:
添加文件到存储的操作还没有完成。这就是为什么你得到一个空列表的原因。如果你想看到
downloadUrls
列表的内容,你必须只在操作100%完成时才使用该日志语句。现在,既然你使用的是Kotlin,我建议你使用Kotlin Coroutines。所以你的代码可以写得很简单: