我有一个配置文件,正在获取它,结果得到了标题和查询列表:String
根据查询,我应该实施不同的请求
我的意思是我有request1的配置
根据request1的结果,我应该将其与request2,request3…组合在一起。
这些组合我想平行
我知道我可以使用const arr = [{"id":"5","name":"Immidiate"},
{"id":"4","name":"30 days"},
{"id":"3","name":"21 days"},
{"id":"2","name":"14 days"},
{"id":"1","name":"7 days"},
{"id":"6","name":"Custom"}];
const resultArray = arr.map(elm => ({ Name: elm.id, Data: elm.name}));
console.log(resultArray);
使用RxJava
来实现,但是如何使用协同程序来实现呢?
答案 0 :(得分:1)
以非协程的方式考虑它,如果函数没有挂起而只是常规函数,您会怎么做?
您可以将发出的值存储在变量中,并检查是否已经缓存了它;如果有,则可以只返回这些值,否则,请计算这些值。
如果您需要听一些高级逻辑(例如RxJava的Subject
s),则可以使用Kotlin协程Channel
s。
要创建频道,可以使用Channel()
或ConflatedBroadCastChannel()
或其他变体。如果希望您的频道与RxJava的PublishSubject完全一样,则可以使用ConflatedBroadCastChannel:
val broadCastChannel = ConflatedBroadcastChannel<Int>()
您可以使用broadCastChannel.offer(value)
将值发送到通道。
要从通道接收值,可以使用简单的for-each循环:
for (i in broadCastChannel.openSubscription()) {
//your values
}