gpt4 book ai didi

java - 如何使用 Rx Java 在链请求上更新 UI

转载 作者:行者123 更新时间:2023-11-29 03:00:48 27 4
gpt4 key购买 nike

我想根据链请求更新 UI 2 次。

请求 getUserByID() 完成后首次更新 UI。第二次在 getParentName() 上完成,但是当我尝试根据第一个请求更新 UI 并获取线程问题的错误原因时。

我不知道如何解决这个问题。

示例代码

API.getUserByID("USER ID")
.flatMap(user-> {
// How to update UI here?
return API.getParentName(user.getId()))
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(parent-> {
// It's ok to update UI cause of on main thread.
parentTextView.setText(parent.getName())
});

谢谢。

最佳答案

您想要在可观察发射上更新 UI,因此您需要为该可观察对象指定观察者线程。
然后你应该使用 doOnNext 运算符,它在观察者线程上调用:

API.getUserByID("USER ID")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(user_ -> {calls on observer thread})
.flatMap(user-> {
return API.getParentName(user.getId()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
})
.subscribe(parent-> {
// It's ok to update UI cause of on main thread.
parentTextView.setText(parent.getName())
});

关于java - 如何使用 Rx Java 在链请求上更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115537/

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