gpt4 book ai didi

android - RXKotlin 在 doOnNext 内部中断并调用另一个函数

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

我刚开始使用 rx kotlin,还没有完全理解。我正在尝试遍历查询列表,并一个一个地执行它们。在这个列表中,我有一个特殊的字符串,一旦到达,我想打破循环并执行另一个功能

我怎样才能在下面的例子中做到这一点?

fun runQueries() {

Observable.fromIterable(queriesTemp)

.subscribeOn(Schedulers.computation())
.doOnNext { query ->
if (query.contains("COMPLETION OF SDF QUERIES")) {
if (loginStatus == StaticVariables.FT_CASE_NEW_LOGIN) {
tasksQueriesTemp = arrayOfNulls(queries.size - queries.indexOf(query))
System.arraycopy(queries, queries.indexOf(query), tasksQueriesTemp, 0, tasksQueriesTemp!!.size)
}
// break the loop here
runOtherQueries()
break
}
if (!TextUtils.isEmpty(query)) {
mDatabase.execSQL(query, false, "")
}
action(tasksQueriesTemp!!.indexOf(query))
}
.doOnComplete { executeOtherUpdates(tasksQueriesTemp) }
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
}

fun runOtherQueries() {
}

最佳答案

使用 takeWhiledoOnNext 中分解出你想要中断的部分:

val broken = AtomicBoolean();
Observable.fromIterable(queriesTemp)
.subscribeOn(Schedulers.computation())
.takeWhile { query ->
if (query.contains("COMPLETION OF SDF QUERIES")) {
if (loginStatus == StaticVariables.FT_CASE_NEW_LOGIN) {
tasksQueriesTemp = arrayOfNulls(queries.size -
queries.indexOf(query))
System.arraycopy(queries, queries.indexOf(query),
tasksQueriesTemp, 0, tasksQueriesTemp!!.size)
}
// break the loop here
runOtherQueries()
broken.set(true)
return@takeWhile false // whatever the Kotlin syntax is for local returns
}
return@takeWhile true
}
.doOnNext { query ->

if (!TextUtils.isEmpty(query)) {
mDatabase.execSQL(query, false, "")
}
action(tasksQueriesTemp!!.indexOf(query))
}
.doOnComplete {
// if you don't want to execute the other updates if the code
// in takeWhile has "broken out of the loop"
if (!broken.get())
executeOtherUpdates(tasksQueriesTemp)
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe()

关于android - RXKotlin 在 doOnNext 内部中断并调用另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281983/

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