功能在另一个完成之前开始

时间:2020-04-17 21:21:03

标签: android firebase kotlin firebase-storage

``我的问题是我的elaniekle函数在storagew函数结束之前启动。所以mydownloadurl在数据库中似乎为空,我该如何解决呢?谢谢。

enter code here     ekle.setOnClickListener {
            storage2()
            elaniekle()
    }


        fun storage2() {
        var uuid = UUID.randomUUID()
        var ref = storage.reference
        var imagename = "$uuid.jpg"
        var imagesReference = ref.child("images").child(imagename)
        imagesReference.putFile(imagelist[0]).addOnSuccessListener { taskSnapshot ->
            var deyisen =** FirebaseStorage.getInstance().reference.child("images").child(imagename)
            deyisen.downloadUrl.addOnSuccessListener { uri ->
               mydownloadurl =  uri
            }
        }
    }
    fun elaniekle(){
            var sikmap= hashMapOf<String,Any>()
            sikmap.put("Email",auth.currentUser!!.email.toString())
            uniqueid = db.collection("Posts").document().id
            sikmap.put("uniqueid",uniqueid.toString())
            sikmap.put("qapaqsekli",mydownloadurl.toString())
            db.collection("Posts").add(sikmap)
    }

1 个答案:

答案 0 :(得分:0)

您必须等待回调完成:

ekle.setOnClickListener {
    storage2()
}


    fun storage2() {
    var uuid = UUID.randomUUID()
    var ref = storage.reference
    var imagename = "$uuid.jpg"
    var imagesReference = ref.child("images").child(imagename)
    imagesReference.putFile(imagelist[0]).addOnSuccessListener { taskSnapshot ->
        var deyisen =** FirebaseStorage.getInstance().reference.child("images").child(imagename)
        deyisen.downloadUrl.addOnSuccessListener { uri ->
           mydownloadurl =  uri
           elaniekle()
        }
    }
}

fun elaniekle(){
        var sikmap= hashMapOf<String,Any>()
        sikmap.put("Email",auth.currentUser!!.email.toString())
        uniqueid = db.collection("Posts").document().id
        sikmap.put("uniqueid",uniqueid.toString())
        sikmap.put("qapaqsekli",mydownloadurl.toString())
        db.collection("Posts").add(sikmap)
}