【问题标题】:How to display Subscribe data in HTML which is continuous change every second in Angular 4如何在 Angular 4 中以每秒连续变化的 HTML 显示订阅数据
【发布时间】:2019-07-18 14:45:21
【问题描述】:

我正在使用 ionic 中的 BLE 本机库。我正在尝试在屏幕上显示heartbeat。我能够记录不断变化的heartrate 值。我想要的是在我的 html 页面上显示实时的 heartrate 值。

这是我的代码

<p>{{ heartrate }}</p>
heartrate: number = 0; // global variable

this.ble.startNotification("EB:53:D1:0A:A0:78", "180D", "2A37").subscribe(
    (buffer) => {
        this.getHeartRateNotifications(buffer);
        console.log(buffer);
    }, 
    (err) => {
        console.log('aa', JSON.stringify(err))
    })


getHeartRateNotifications(buffer) {
    console.log(buffer);
    console.log('array : ', String.fromCharCode.apply(null, new Uint8Array(buffer)));
    const value = new DataView(buffer);

    console.log("I am value: ", JSON.stringify(value));
    const flags = value.getUint8(0);
    console.log('FLAGS', flags);

    if (this.session.isEven(flags)) {
        this.heartRate = value.getUint8(1);
        console.log('HEART RATE 8 bit: ', this.heartRate);
    } else if (this.session.isOdd(flags)) {
        this.heartRate = value.getUint16(2);
        console.log('HEART RATE 16 bit: ', this.heartRate);
    }
}

【问题讨论】:

  • 有什么问题?虽然我不确定getHeartRateNotifications 应该做什么,但它似乎在语法上是正确的。
  • 如果这段代码在一个组件类里面,那么在它的模板里,你可以&lt;p [textContent]="heartRate"&gt;&lt;/p&gt;
  • 或者您可以通过执行 "{{ ble.startNotification("EB:53:D1:0A:A0:78", "180D", "2A37") | async }}" 直接显示缓冲区

标签: angular rxjs


【解决方案1】:

如果您对 getHeartRateNotification 函数进行一些更改,以下内容应该可以满足您的需求:

this.heartRate$ = this.ble.startNotification("EB:53:D1:0A:A0:78", "180D", "2A37").map((buffer)=&gt; this.getHeartRateNotifications(buffer));
&lt;div class="heart-rate"&gt;{{ heartRate$ | async }}&lt;/div&gt;

只需在你的函数中设置一个返回值:

getHeartRateNotifications(buffer){
  const value = new DataView(buffer);
  const flags = value.getUint8(0);
  
 if(this.session.isEven(flags)){
   return value.getUint8(1);
 }else if(this.session.isOdd(flags)){
   return value.getUint16(2);
 }
}

然后在组件中输入 heartRate$ 属性作为 Observable

heartRate$: Observable&lt;number&gt;;

等等!

【讨论】:

  • +1 用于使用异步管道。请注意,可观察对象上的 .map 是 rxjs5 语法。 map 现在是一个管道运算符 .pipe(map(...)).
猜你喜欢
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多