Javascript 如何定期生成随机值并使用MQTT协议发布它?

Javascript 如何定期生成随机值并使用MQTT协议发布它?,javascript,node.js,random,mqtt,Javascript,Node.js,Random,Mqtt,我想每隔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 ()

我想每隔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);

提前感谢。

for循环只生成5个值,然后
setInterval()
只需再次重用该循环中的最后一个值

for循环在这里并没有真正起到任何作用,它将在不到一秒钟的时间内发布5个“随机”值(这不是您要求的),然后
setInterval()
只是反复发送最后一个值

移除for循环并将随机值生成器移动到传递给
setInterval()的函数中。

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
var interval = setInterval(function(){
  newdata= String(Math.floor(Math.random() * (MAX_PER_RANK - MIN_PER_RANK  + 1) + MIN_PER_RANK));
  vs.sendStateUpdate(newdata)
},1000);