gpt4 book ai didi

javascript - 如何在读取第二个值之前禁用 NFC 事件监听器?

转载 作者:行者123 更新时间:2023-12-03 00:47:22 24 4
gpt4 key购买 nike

此问题源于 NFC 标签太敏感。当我放置 NFC 标签一次时,会立即输入太多值。因此,如果输入一个 NFC 标签值,则希望在那一刻停止 NFC 事件监听器。我该如何实现它?

我认为设备和 NFC 标签之间的 NFC 读取速度比程序端的 EventListener 取消速度快。

这个 ionic 页面的工作方式如下...

*1)首先加载ionViewDidEnter()

2)添加addListenNFC()

3) 如果有 NFC 标记,则值发送到 onNfcLogin(tagId)

4) 在 onNfcLogin(tagId) 中,这包含“Http post 服务提供商”作为 userService.nfclogin()

5) 最后得到服务器端返回的json类型*

<强>{“依赖项”:{ “ ionic native /核心”:“4.7.0”, “ ionic Angular ”:“3.9.2”, “ typescript ”:“~2.6.2”]},“测试设备”:“Galaxy8”,“NFC标签”:“便宜的NFC棒”}

  ionViewDidEnter() {
this.nfc.enabled().then((resolve) => {
this.addListenNFC();
}).catch((reject) => {
alert("NFC is not supported by your Device");
});
}


addListenNFC() {
this.nfc.addTagDiscoveredListener().subscribe(data => {
//window.removeEventListener; //this is not working.
if (data && data.tag && data.tag.id) {
this.tagId = this.nfc.bytesToHexString(data.tag.id);
if (this.tagId) {
this.scanned = true;
this.onNfcLogin(this.tagId);
} else {
alert('NFC_NOT_DETECTED');
}
}
});
}


onNfcLogin(tagId) {
this.userService.nfclogin(tagId).subscribe(data => {
// "this.userService.nfclogin()" is at Http post service provider
this.getData = JSON.stringify(data);
if (this.getData) {
this.granted = true;
this.loading.dismiss();
this.events.publish('user:login');
this.navCtrl.setRoot(HomePage);
}
this.resetScanData;
},
error => {
this.loading.dismiss();
this.showError(error);
});
}


showError(error) {
console.log(error);
let alert = this.alertCtrl.create({
title: 'Login Error',
message: error.json().message,
buttons: ['OK']
});
alert.present();
}


resetScanData() {
this.granted = false;
this.scanned = false;
this.tagId = "";
}

最佳答案

您只能使用 observable.take(1).subscribe(...) 进行第一个订阅。
然后稍后重新创建订阅。

关于javascript - 如何在读取第二个值之前禁用 NFC 事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com