Android Firebase短动态链接-等待多个短链接完成

Android Firebase短动态链接-等待多个短链接完成,android,firebase,kotlin,firebase-dynamic-links,Android,Firebase,Kotlin,Firebase Dynamic Links,我正在寻找一个解决方案,用于收集从onSuccess call创建动态短链接的所有结果 缩短场景: fun getshortdynamicclinkusecase( onSuccessListener:(ShortDynamicClink)->Unit ):Task=Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT){ link=Uri.parse(uriString) domainUriPrefix=Dynam

我正在寻找一个解决方案,用于收集从onSuccess call创建动态短链接的所有结果

缩短场景:

fun getshortdynamicclinkusecase(
onSuccessListener:(ShortDynamicClink)->Unit
):Task=Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT){
link=Uri.parse(uriString)
domainUriPrefix=DynamicClinkHost
}.addOnSuccessListener{
onSuccessListener.invoke(它)
}
}
fun GetShortDynamicClink()=启动{
试一试{
GetShortDynamicClinkUserCase.execute(
//调用onSucces创建动态链接->我想这是异步的?
onSuccessListener={shortLink->
添加(DynamicLinkData(appType,shortLink.shortLink))
}
) 
GetShortDynamicClinkSuccess()
}捕获(可丢弃:可丢弃){
GetShortDynamicClinkFailed(可丢弃)
}
}
val shortDynamicLinks=mutableListOf()
fun dummyFun(){
getShortDynamicLink()//执行成功后将动态链接添加到列表
getShortDynamicLink()//执行成功后将动态链接添加到列表
//参考动态链接列表,该列表为空,因为它执行得更快
//然后在getShortDynamicLink()函数中调用onSuccess
一些(短的动态链接)
}

我注意到您已经在使用Kotlin协程,所以我建议您使用库

通过将依赖项添加到gradle文件,将其包括在项目中:

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$version'
然后您可以利用它们的
await()
扩展功能:

suspend fun getShortDynamicClinkUsecase():shortDynamicClink{
返回Firebase.dynamicLink.shortLinkAsync(ShortDynamicLink.Suffix.SHORT){
link=Uri.parse(uriString)
domainUriPrefix=DynamicClinkHost
}.等待
}
暂停趣味GetShortDynamicClink(){
试一试{
val shortLink=getshortdynamicclinkusecase().await()
添加(DynamicLinkData(appType,shortLink.shortLink))
GetShortDynamicClinkSuccess()
}捕获(可丢弃:可丢弃){
GetShortDynamicClinkFailed(可丢弃)
}
}
fun dummyFun()=启动{
getShortDynamicLink().await()//在执行成功时向列表添加动态链接
getShortDynamicLink().await()//在执行成功时向列表添加动态链接
//参考动态链接列表,该列表为空,因为它执行得更快
//然后在getShortDynamicLink()函数中调用onSuccess
一些(短的动态链接)
}

我注意到您已经在使用Kotlin协程,所以我建议您使用库

通过将依赖项添加到gradle文件,将其包括在项目中:

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$version'
然后您可以利用它们的
await()
扩展功能:

suspend fun getShortDynamicClinkUsecase():shortDynamicClink{
返回Firebase.dynamicLink.shortLinkAsync(ShortDynamicLink.Suffix.SHORT){
link=Uri.parse(uriString)
domainUriPrefix=DynamicClinkHost
}.等待
}
暂停趣味GetShortDynamicClink(){
试一试{
val shortLink=getshortdynamicclinkusecase().await()
添加(DynamicLinkData(appType,shortLink.shortLink))
GetShortDynamicClinkSuccess()
}捕获(可丢弃:可丢弃){
GetShortDynamicClinkFailed(可丢弃)
}
}
fun dummyFun()=启动{
getShortDynamicLink().await()//在执行成功时向列表添加动态链接
getShortDynamicLink().await()//在执行成功时向列表添加动态链接
//参考动态链接列表,该列表为空,因为它执行得更快
//然后在getShortDynamicLink()函数中调用onSuccess
一些(短的动态链接)
}