Fix zip operator not producing a Subscription

master
Daniel Andrus 2019-05-07 10:55:38 -07:00
parent 4a475209f1
commit 823c9526f8
2 changed files with 16 additions and 2 deletions

9
rx.lua
View File

@ -1813,6 +1813,7 @@ function Observable.zip(...)
return Observable.create(function(observer)
local values = {}
local active = {}
local subscriptions = {}
for i = 1, count do
values[i] = {n = 0}
active[i] = true
@ -1858,8 +1859,14 @@ function Observable.zip(...)
end
for i = 1, count do
sources[i]:subscribe(onNext(i), onError, onCompleted(i))
subscriptions[i] = sources[i]:subscribe(onNext(i), onError, onCompleted(i))
end
return Subscription.create(function()
for i = 1, count do
if subscriptions[i] then subscriptions[i]:unsubscribe() end
end
end)
end)
end

View File

@ -15,6 +15,7 @@ function Observable.zip(...)
return Observable.create(function(observer)
local values = {}
local active = {}
local subscriptions = {}
for i = 1, count do
values[i] = {n = 0}
active[i] = true
@ -60,7 +61,13 @@ function Observable.zip(...)
end
for i = 1, count do
sources[i]:subscribe(onNext(i), onError, onCompleted(i))
subscriptions[i] = sources[i]:subscribe(onNext(i), onError, onCompleted(i))
end
return Subscription.create(function()
for i = 1, count do
if subscriptions[i] then subscriptions[i]:unsubscribe() end
end
end)
end)
end