|
@@ -266,7 +266,7 @@ function Observable:distinct()
|
|
end
|
|
end
|
|
|
|
|
|
--- Returns a new Observable that only produces values of the first that satisfy a predicate.
|
|
--- Returns a new Observable that only produces values of the first that satisfy a predicate.
|
|
--- @arg {function} predicate - The predicate to filter values with.
|
|
|
|
|
|
+-- @arg {function} predicate - The predicate used to filter values.
|
|
-- @returns {Observable}
|
|
-- @returns {Observable}
|
|
function Observable:filter(predicate)
|
|
function Observable:filter(predicate)
|
|
predicate = predicate or identity
|
|
predicate = predicate or identity
|
|
@@ -290,6 +290,32 @@ function Observable:filter(predicate)
|
|
end)
|
|
end)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
+--- Returns a new Observable that produces the first value of the original that satisfies a
|
|
|
|
+-- predicate.
|
|
|
|
+-- @arg {function} predicate - The predicate used to find a value.
|
|
|
|
+function Observable:find(predicate)
|
|
|
|
+ predicate = predicate or identity
|
|
|
|
+
|
|
|
|
+ return Observable.create(function(observer)
|
|
|
|
+ local function onNext(x)
|
|
|
|
+ if predicate(x) then
|
|
|
|
+ observer:onNext(x)
|
|
|
|
+ return observer:onComplete()
|
|
|
|
+ end
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ local function onError(message)
|
|
|
|
+ return observer:onError(e)
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ local function onComplete()
|
|
|
|
+ return observer:onComplete()
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ return self:subscribe(onNext, onError, onComplete)
|
|
|
|
+ end)
|
|
|
|
+end
|
|
|
|
+
|
|
--- Returns a new Observable that only produces the first result of the original.
|
|
--- Returns a new Observable that only produces the first result of the original.
|
|
-- @returns {Observable}
|
|
-- @returns {Observable}
|
|
function Observable:first()
|
|
function Observable:first()
|