任务是并行处理大量对象,但不能超过一定数量的处理程序同时工作。
例如,有这个选项:
fun <A, B>List<A>.pmap(f: suspend (A) -> B): List<B> = runBlocking {
map { async(CommonPool) { f(it) } }.map { it.await() }
}
但是会同时处理整个列表。
怎么会做出这样的类比delayWhen呢 RxJava?
var i:Int = 0; //atomic
onEach { i++ } }
.delayWhen{ i > 9 }
.map{ async(CommonPool){ e -> { doSomeStuff(e) } } }
.map { it.await() }
.onEach { i-- }
也许这里需要一种不同的方法?
这样做了