我有功能下载网址,我希望主程序等待,直到我有合适的网址,然后我可以将其放入对象中
fun uploadImage(userName: String, uri: Uri): String
{
uploadImageProcess(userName , uri)
return downloadUri
}
private fun uploadImageProcess(userName: String, uri: Uri){
val ref = createReference(userName)
Log.d("uploadImageFUNCTION", "Reference: $ref")
val uploadTask = ref.putFile(uri)
val urlTask = uploadTask.continueWithTask { task ->
if (!task.isSuccessful) {
task.exception?.let {
Log.d("uploadImageFUNCTION", "task upload .exception: $task.exception")
throw it
}
}
ref.downloadUrl
}.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("uploadImageFUNCTION", "task downloadUrl : ${task.result}")
downloadUri = task.result.toString()
} else {
Log.d("uploadImageFUNCTION", "task downloadUrl .exception: $task.exception")
}
}
}
请帮助我
我正在尝试异步,但没有运气
像这样使用协程
suspend fun uploadImageFile(): String {
return withContext(Dispatchers.IO) {
val deferredResult = async {
uploadImage()
}
deferredResult.await()
}
}