- From: Jafar Husain via GitHub <sysbot+gh@w3.org>
- Date: Tue, 02 Jun 2015 19:13:10 +0000
- To: public-device-apis@w3.org
@rwaldron the type of values would be whatever was in sensor 1 until the condition was met and then sensor 2. Let's say accelerometer positions for example. The example is just to demonstrate that declarative composition is possible if the underlying type supports a completion semantic. I'd love to put together a real use case and will do so when I get a chance. Suggestions of thorny signal composition problems are welcome. If all you are doing is listening to a single sensor for the life of a program and taking no action beyond updating a variable, composition won't be very interesting to you. My suspicion is that there are many use cases for combining sensors into new more complex sensor streams. Remove event listener is insufficient to describe concatenation. Let me try and do a better job of explaining. An Observable emits a special completion signal (like generator) when it's finished. sensor.subscribe({ next(v) { /* got a sensor value */ }, return(v) { /* got a completion signal */ }); A completion signal might _seem_ unnecessary for a sensor, which is presumably an infinite stream. However it is interesting to note that you can compose infinite streams together with functions and other streams to create _finite_ streams. That is what this subexpression does: sensor1.takeWhile(pos => pos.x - pos.y) This creates an observable which ends when the condition is met. Observables also free subscriptions when they end, so there is no need to call remove event listener. Because the Observable type has a clear end signal, you can build more interesting combinators like concatenation: sensor1.takeWhile(pos => pos.x - pos.y).concat(sensor2) The concatenation method looks for the return method to be called, and then begins listening to the other sensor. Without an explicit completion semantic in EventTarget, building either of these methods isn't possible. We'd have to add more semantics to EventTarget to make that happen. -- GitHub Notif of comment by jhusain See https://github.com/w3c/sensors/issues/21#issuecomment-108062140
Received on Tuesday, 2 June 2015 19:13:12 UTC