我在试着找出我的问题从何而来。
我试图给予有关数据发送方与其数据表的连接状态的信息。
我把它翻译成这样:如果接收到新数据(new_id不同于id_from_last_request),则将连接状态设置为“已连接”,否则将其设置为“已断开连接”
<script>
export default {
data() {
return {
search: '',
tag_id: ['bts_d02c2b7d9098aaa2', 'bts_c077ffaa9098aaa2'],
headers: [
{
text: 'Tags',
align: 'start',
sortable: false,
value: 'name',
},
{ text: 'wifi', value: 'wifi' },
],
val_ia: 0,
desserts: [],
id_memory: [],
}
},
mounted() {
this.CreateTable();
setInterval(this.getDatafor, 1000)
},
methods: {
CreateTable() {
for (let i = 0; i < this.tag_id.length; i++) {
this.desserts.push(
{
name: this.tag_id[i],
},
)
}
},
async getDatafor() {
for (let i = 0; i < this.desserts.length; i++) {
this.val_ia = i;
await Promise.all([this.getAllData()]);
}
},
async getAllData() {
const tag_id_name = encodeURIComponent(this.tag_id[this.val_ia]);
const url = this.$api.getRESTApiUri() + `/all/last_id/${tag_id_name}`;
return fetch(url)
.then(res => res.text())
.then((result) => {
console.log(tag_id_name)
console.log(this.id_memory[this.val_ia]);
console.log(data[0].id)
const b = this.Test(this.id_memory[this.val_ia], data[0].id);
console.log(b)
if(b){
this.desserts[this.val_ia].wifi = 'connecté'
console.log('connecté')
}else{
this.desserts[this.val_ia].wifi = 'déconnecté'
console.log('déconnecté')
}
this.id_memory[this.val_ia] = data[0].id
})
.catch((error) => {
console.log(error)
});
},
Test(x, y) {
const a = x !== y
return a
},
}
}
</script>
仅在没有新数据的情况下const B = false
这是我控制台:
我应该处于断开连接状态,但它显示了连接状态
应该有一个合乎逻辑的解释,但我看不出来。
2条答案
按热度按时间fumotvh31#
您在Test方法中使用的是没有型别胁迫(
x !== y
)的相等。this.id_memory[this.val_ia]
和data[0].id
可能有不同的类型-一个是数字,第二个是字符串或其他类型。最好的解决方案是在比较之前将这些值转换为相同的类型,如下所示:
部分使用案例:
b4wnujal2#
当创建我的表时,我忘记了推送变量wifi和蓝牙,所以它们没有更新自己。