cujojs / most

Ultra-high performance reactive programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.