【やりたいこと】
FirebaseのMLkitの翻訳機能を関数にしたい
【わからないこと】
addOnSuccessListenerやaddOnFailureListenerの処理が実行されてからreturnで関数を終わらせたいのですが,実際にはそれらが実行される前にreturnで関数が終わってしまいます.
改善するためにはどう記述すべきなのでしょうか?
Kotlin
1fun firebaseTranslator(word: String): Pair<String, String> { 2 3 var isModelDownloded = false 4 var finished = false 5 6 var translatedWord = "" 7 var errorMessage = "" 8 9 // 翻訳の設定 10 val options = FirebaseTranslatorOptions.Builder() 11 .setSourceLanguage(FirebaseTranslateLanguage.EN) 12 .setTargetLanguage(FirebaseTranslateLanguage.JA) 13 .build() 14 15 val englishJapaneseTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options) 16 17 englishJapaneseTranslator.downloadModelIfNeeded() 18 .addOnSuccessListener { 19 isModelDownloded = true 20 englishJapaneseTranslator.translate(word) 21 .addOnSuccessListener { 22 translatedWord = it 23 } 24 .addOnFailureListener { 25 errorMessage = "翻訳に失敗しました" 26 } 27 } 28 .addOnFailureListener { 29 errorMessage = "翻訳モデルのダウンロードに失敗しました" 30 } 31 32return Pair(translatedWord, errorMessage) 33}
回答2件
あなたの回答
tips
プレビュー