[sensors] Use simple event dispatch mechanism instead of task source (queued)

alexshalamov has just created a new issue for https://github.com/w3c/sensors:

== Use simple event dispatch mechanism instead of task source (queued) ==
**Short summary:**

Sensors are operating in simple Publish & Subscribe model, therefore, queued event processing is not required and over-complicates API and it's implementation.

**Detailed explanation:**

Event queue is suitable for cases where ordered task processing is needed. For example, networking, databases or APIs that provide sync API and manage async task queue. You can call `write(data);` multiple times and each write is ordered task, if error happens, all pending tasks are removed from queue and `'onerror'` event task is put to the queue.

**Problems with queued task processing:**
- The `'onchange'` event would need to carry reading data, otherwise when event queue is processed, event would not be in sync with `Sensor.|reading|`
- When we attach |reading| to an event, we will have another problem, `event.reading != Sensor.reading`, might be confusing for developers.

**Pros for simple event:**
- `onchange` is synchronized with `Sensor.reading`
- No need to carry extra data in event.
- No need to manage queue, we don't even need a queue, since we always have 1 update per event loop cycle per Sensor instance.
- Simpler for browser vendors to implement.

**Proposed resolution:**

- Use simple event dispatch mechanism
- Remove task source related information from the spec

Please view or discuss this issue at https://github.com/w3c/sensors/issues/215 using your GitHub account

Received on Friday, 26 May 2017 09:13:52 UTC