map + switch does not close previous streams (when using fromEvent)
guojenman opened this issue · comments
Summary
map + switch doesn't close the previous streams after switching to the latest (when using fromEvent)
Expected result
when we switch to a new stream, the old stream should be closed
Actual Result
values from old streams are ignored BUT the old streams themselves continue to run
Versions
Chrome
- most.js: 1.7.0
Steps to reproduce
In the below plnkr, click on the page a few times really fast.
You should see something like this
start 1
start 2
start 3
end 3
set 3
basically, "end 1" and "end 2" should not show because the streams should be closed when switched to the new one. But what you end up seeing is this
start 1
start 2
start 3
end 1
end 2
end 3
set 3
As you can see, only "set 3" is shown, which is correct... but "end 1" and "end 2" should not be there, because those streams should've been close before ending.
Code to reproduce
This does not work - using fromEvent
http://plnkr.co/edit/aH4uAMsWMt5nBXYQA5Rx?p=preview
Oddly enough, using most.from works
http://plnkr.co/edit/ROK78a?p=preview
At the very least, they should behave exactly the same.
This is the fromEvent using RxJS, which works as expected
http://plnkr.co/edit/R4lONpIQ1PhpTG9sFvTi?p=preview
Hi @guojenman, thanks for opening this issue, and for the test cases. I should have time to investigate later today.
Reproduce locally using the example test case.
@guojenman There's a candidate fix in #490. If you have a chance to pull and build and then try it out, I'd really appreciate feedback. All it needs is a unit test to prevent a regression, then we'll get it merged and released.
@briancavalier I can confirm that this fix works. Thank you!
@guojenman Awesome, thanks for trying it out and letting us know.