- 
                Notifications
    You must be signed in to change notification settings 
- Fork 24
Channel ‐ Using produce
        Devrath edited this page Dec 23, 2023 
        ·
        2 revisions
      
    | Contents | 
|---|
| Using Produce to send emissions | 
| Code | 
| Output | 
- When we use produce, We explicitly do not need to closethe channel.
- A produce block returns a channel reference, Which can be used by other coroutines to receive the values.
- Also to not that then the channels are active the enclosing co-routine is also active, And it completes once the channel is closed.
    private var receiveChannel : ReceiveChannel<Superheroes> = Channel()
    fun usingProduce() {
        // Co-Routine - 1
        viewModelScope.launch {
            receiveChannel = produce {
                send(Superheroes.Batman)
                send(Superheroes.Superman)
                send(Superheroes.Spiderman)
            }
        }
        // Co-Routine - 2
        viewModelScope.launch {
            println("Is closed to receive -->"+ receiveChannel.isClosedForReceive)
            receiveChannel.consumeEach { superHero ->
                println(superHero)
            }
            println("Is closed to receive -->"+ receiveChannel.isClosedForReceive)
        }
    }
    enum class Superheroes { Batman , Superman , Spiderman }Is closed to receive -->false
Batman
Superman
Spiderman
Is closed to receive -->true