gpt4 book ai didi

android - 我如何在 CoroutineScope 中取消并检测取消

转载 作者:行者123 更新时间:2023-11-29 23:05:04 27 4
gpt4 key购买 nike

从 CoroutineScope 检测取消

我正在尝试从 CoroutineScope 检测取消,但是当我尝试在 CoroutineScope 中调用 cancel 方法时,isCancelled 属性没有改变

我希望从 ViewModel 中取消协程的方法

fun login() = viewModelScope.launch{
try{
repository.login(emailLogin.get()!!, passwordLogin.get()!!)
}catch (e: AuthenticationHttpErrorException){
cancel(CancellationException(e.message))
Toast.makeText(getApplication(),e.message, Toast.LENGTH_SHORT).show()
Log.e("ERROR LOGIN", e.message)
}
}

我如何从 Activity 调用登录方法

fun submitLogin(view: View){
val loginResult = authenticationViewModel.login()
if(loginResult.isCancelled){
Log.e("LOGIN FAILED", "Login cancelled")
}else{
Log.v("LOGIN SUCCESS", "Login success")
}
}

当我从 CoroutineScope 调用 cancel 方法并在 if 语句中触发一些代码时,我期望 isCancelled 属性更改为 true

最佳答案

launch 确实启动了一个异步协程。因此 login-body 将在稍后运行,您无法在调用后直接访问结果。在您的示例中,一个简单的 suspend 函数可能会更好。

关于android - 我如何在 CoroutineScope 中取消并检测取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com