https://kotlinlang.org logo
#coroutines
Title
# coroutines
a

Andrew Ebling

03/10/2021, 10:06 AM
how do I cancel a flow after the first time
collect { }
completes? I’d like to do something like this, but the job val is not visible:
Copy code
val eventJob = launch {
   myChannel
      .consumeAsFlow()
      .filterAllButFinalEvent()
      .collect { event ->
          doSomething()
          eventJob.cancel() // doesn’t compile
      }
   }
a

Albert Chang

03/10/2021, 10:08 AM
a

Andrew Ebling

03/10/2021, 10:08 AM
ah - I see. So do I put that after
.consumeAsFlow()
or in place of it?
a

Albert Chang

03/10/2021, 10:10 AM
Copy code
launch {
    val firstEvent = yourFlow.first()
    doSomething()
}
Or alternatively you can use
Flow.take(1).collect()
.
a

Andrew Ebling

03/10/2021, 10:12 AM
perfect - that’s done it. Many thanks @Albert Chang 👍
7 Views