我想每1秒完全生成不同的随机值,并将其发布到MQTT协议。代码正在工作,但它一直在发送最后一个值。如何使它每1秒发送一个不同的值?
var mqtt = require('mqtt')
var Broker_URL = 'mqtt://localhost';
var client = mqtt.connect(Broker_URL);
var MIN_PER_RANK =75
var MAX_PER_RANK =100
client.on('connect', function () {
console.log("MQTT connected "+ client.connected);
})
class virtualsensor {
sendStateUpdate (newdata) {
client.publish("testtopic", newdata)
}
}
let vs = new virtualsensor()
let newdata = '';
for (var i=0; i<5; i++){
newdata= String(Math.floor(Math.random() * (MAX_PER_RANK - MIN_PER_RANK + 1) + MIN_PER_RANK));
vs.sendStateUpdate(newdata)
}
var interval = setInterval(function(){vs.sendStateUpdate(newdata)},1000);
输出:
testtopic 81
testtopic 76
testtopic 89
testtopic 100
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
提前谢谢。
for循环只生成5个值,然后setInterval()
只是再次重用该循环的最后一个值。
for循环在这里并没有真正做任何有用的事情,它将发布5";"随机";值(这不是您所要求的(,则setInterval()
只是一遍又一遍地重复发送最后一个值。
移除for循环并将随机值生成器移动到传递给setInterval()
的函数
var interval = setInterval(function(){
newdata= String(Math.floor(Math.random() * (MAX_PER_RANK - MIN_PER_RANK + 1) + MIN_PER_RANK));
vs.sendStateUpdate(newdata)
},1000);