似乎我们无法在网络工作者中获取传感器数据。我想知道背后的原因。用例是,我正在考虑获取工作线程中的地理位置数据,并且只将处理过的版本发送到主线程。
对于GPS,这个帖子表示在工作线程中不支持它(没有给出原因)。我仔细检查了一下,navigator.geolocation在网络工作者中不受支持。对于加速器和陀螺仪,我们有DeviceOrientationEvent和DeviceMotionEvent。但是我们需要通过window对象来使用它们,这个窗口对象对于工作线程是不可用的。同样的情况也适用于环境光事件。
所以我的问题是:
发布于 2014-03-11 03:27:24
好的。在阅读了一些code代码之后,我现在有了自己的问题2的答案。其他三个问题我还是没有答案..。
对问题2的回答: navigator.geolocation是否属于导航器?
navigator.geolocation只属于主线程中的导航器,而不属于工作线程中的导航器。
主要原因是,尽管工作线程中的导航器看起来与主线程中的导航器完全相同,但这两个导航器在C++端有独立的实现。这就是为什么工作线程中不支持navigator.geolocation。
相关代码为Navigator.idl代码,WorkerNavigator.idl代码为铬代码。您可以看到,它们是.idl文件中的两个独立接口。而且它们在绑定的C++端有独立的实现。导航器是DOMWindow的属性,而WorkerNavigator是WorkerGlobalScope的属性。
但是,在JavaScript方面,它们具有相同的名称: navigator。嗯,我知道这两个导航器在两个不同的范围内,所以没有名字冲突。但是,当我在JavaScript中使用API时,如果主线程和工作线程具有相同的名称,我希望它们都有类似的行为。歧义就是这样发生的。
https://stackoverflow.com/questions/21580944
复制相似问题