If I'm understand the problem I think this is by design. Closing a channel results in a logical termination value being put into the channel.
This is so that, by default, core.async won't loose data.
Most of the time when I encounter this problem I fix it by draining the channel:
(defn drain [c]
(go (while (not (nil? (<! c)))
nil)))
And then:
(close! c)
(drain c)
This is so that, by default, core.async won't loose data.
Most of the time when I encounter this problem I fix it by draining the channel:
(defn drain [c]
(go (while (not (nil? (<! c)))
nil)))
And then:
(close! c)
(drain c)
Комментариев нет:
Отправить комментарий