ソースを参照

Improve Observable.skipUntil;

bjorn 10 年 前
コミット
d95beda0f1
1 ファイル変更18 行追加9 行削除
  1. 18 9
      rx.lua

+ 18 - 9
rx.lua

@@ -627,23 +627,32 @@ end
 -- @returns {Observable}
 function Observable:skipUntil(other)
   return Observable.create(function(observer)
+    local triggered = false
     local function trigger()
-      local function onNext(...)
-        return observer:onNext(...)
-      end
+      triggered = true
+    end
+
+    other:subscribe(trigger, trigger, trigger)
 
-      local function onError(message)
-        return observer:onNext(message)
+    local function onNext(...)
+      if triggered then
+        observer:onNext(...)
       end
+    end
 
-      local function onComplete()
-        return observer:onComplete()
+    local function onError()
+      if triggered then
+        observer:onError()
       end
+    end
 
-      return self:subscribe(onNext, onError, onComplete)
+    local function onComplete()
+      if triggered then
+        observer:onComplete()
+      end
     end
 
-    other:subscribe(trigger, trigger, trigger)
+    return self:subscribe(onNext, onError, onComplete)
   end)
 end