如何从kotlin的匿名类实现中更改全局variables

fun loadTweets(uid: Int) : Observable<ArrayList> { var tweets: ArrayList = ArrayList() val builder: Retrofit.Builder = Retrofit.Builder() .baseUrl(NetworkContract.SERVER_URL) .addConverterFactory(GsonConverterFactory.create()) val retrofit: Retrofit = builder.build() val userService: UserService = retrofit.create(UserService::class.java) val call: Call<List> = userService.loadTweets(uid) call.enqueue(object: Callback<List>{ override fun onResponse(call: Call<List>?, response: Response<List>?) { if(response!!.isSuccessful){ val tweetsTemp: ArrayList = ArrayList() tweetsTemp.add(Tweet("Test!", "Tom")) mTweets = tweetsTemp } } override fun onFailure(call: Call<List>?, t: Throwable?) { } }) return Observable.just(this.mTweets) } 

嘿家伙,我想创建一个Twitter的克隆,但我不能返回更改的mTweetsvariables。 我得到了我的服务器的响应,并在onResponse方法mTweets被改变,但我的函数确实返回一个空字符串(Btw。tweetsTemp只是为了测试,我会稍后改变)。

您不能返回mTweets因为网络调用是异步运行的。

请阅读更多关于同步和异步请求的信息: https : //futurestud.io/tutorials/retrofit-synchronous-and-asynchronous-requests