首页 > 解决方案 > 有没有办法限制我使用 JavaScript 从传感器读取数据的时间?

问题描述

我正在尝试使用来自 FitBit 的加速度数据填充 CSV 文件。这是我到目前为止的代码:

import { display } from "display";
import * as document from "document";

const accelLabel = document.getElementById("accel-label");
const accelData = document.getElementById("accel-data");

const header = ["X","Y","Z"]
const delimiter = ', '

let newheader = header.join(delimiter)+'\n';

let csv = newheader;

const sensors = [];

if (Accelerometer) {
  const accel = new Accelerometer({ frequency: 1 });
  //const obj = {name: "John", age: 30, city: "New York"};
   accel.addEventListener("reading", () => { //put your reading into here //toFixed is the same as round(x,1) //? is like an if else
   let data = [accel.x, accel.y, accel.z];
   csv += data.join(delimiter)+"\n";
    
 });
  sensors.push(accel);
  accel.start();
} else {
  accelLabel.style.display = "none";
  accelData.style.display = "none";
}

我只希望它填充文件约 10 秒。有没有办法限制这个程序运行多长时间?

有可能我可以使用的库,但我在 FitBit Studio 中编写这个,并且不确定这会如何影响我可以/不能使用的库。

标签: javascript

解决方案


setTimeout() 工作完美。我稍微修改了一下,让它看起来更像这样:

...
function accelread(){
   accel.addEventListener("reading", () => {
    //put your reading into here //toFixed is the same as round(x,1) //? is like an if else
    let data = [accel.x, accel.y, accel.z]; //setTimeout()
    csv += data.join(delimiter)+"\n";
   });
}; 

if (Accelerometer) {
  const accel = new Accelerometer({ frequency: 1 });
  setTimeout(accelread(),3000);
  //const obj = {name: "John", age: 30, city: "New York"};
 });
...

它不是成品,我还没有办法对其进行测试,因为我用来测试应用程序的 FitBit 模拟器实际上没有任何加速度数据,但这个想法是成立的。


推荐阅读