我正在try 请求Spotify API,首先我需要授权令牌来获取一些信息, 因此,我正在获取令牌,在此之后,我try 使用该令牌请求一些专辑,但第二个请求在第一个请求之前开始,我传递空令牌,并在获取它之后.我能做什么?

以下是我的代码:

viewModelScope.launch {

        networkUiState = try {
            val networkMusicRepository = NetworkMusicRepository()
            getSpotifyToken(networkMusicRepository)
            val listResult = networkMusicRepository.getAlbums(NetworkUiState.token)

            NetworkUiState.Success
        } catch (e: IOException) {
            Log.d("RESPONSE", e.message.toString())
            NetworkUiState.Error
        } catch (e: HttpException) {
            Log.d("RESPONSE", e.response()?.errorBody()?.string().toString())
            NetworkUiState.Error
        }
    }

并获取令牌函数:

private suspend fun getSpotifyToken(networkMusicRepository: 
NetworkMusicRepository) {
        val responseCall = networkMusicRepository.getToken()
        responseCall.enqueue(object : Callback<TokenResponse> {
        override fun onResponse(
            call: Call<TokenResponse>,
            response: Response<TokenResponse>
        ) {
            val responseBody = response.body()
            if (responseBody != null) {
                val token = responseBody.accessToken
                Log.i("RESPONSE", responseBody.accessToken)

                NetworkUiState.token = token
            } else {
                Log.i("RESPONSE", "null response body")
            }
        }
        override fun onFailure(call: Call<TokenResponse>, t: Throwable) {
            Log.e("RESPONSE", t.message.toString())
        }
    })
}

推荐答案

确保将所有异步方法标记为挂起,例如,如果getSpotifyToken(NetworkMusicRepository)是异步的

suspend fun getSpotifyToken(networkMusicRepository: MusicRepository)

您的改装界面是什么样子的?

Android相关问答推荐

如何将Hilt添加到Android Studio中的Kotlin项目中?

ENV变量在gradle进程中没有更新

长流与长流的比较<>

如何在Android Studio中将我的Java-库&库设置为Kotlin库

BroadCastReceiver的onReceive方法中的Intent上的Extras为空

Android从已连接的设备获得GATT

由于Xcode运行脚本阶段没有指定输出,在IOS Emulator中的KMM项目中生成失败

使用 Gadle kotlin 为多模块 Android 代码库设置 jacoco

在本地通知中设置自定义声音

如何在Android Studio中删除项目

如何在每次显示可组合项时执行代码(并且只执行一次)

是什么导致调用 Firebase 服务器?

Jetpack Compose 如何使一个项目相对于另一个项目垂直居中

@Immutable 对数据类有什么好处?

根据另一个数组的值对数组进行排序

我该怎么做文本计时器

如何限制键盘输入键不允许在下一行输入(Android Jetpack Compose 中的 TextField)

Int 传递给 Intent 但Android工作室说我传递了一个字符串

如何在 Android 上移动 EditText 上的图标?

在 Android 10 (API 29) 中隐藏状态栏并在应用程序中使用其空间