我正在处理一个js文件。我需要js代码每隔几秒就像新的一样运行。它不是一个网站,我不会使用" window"。如果我想单独重新加载js代码,location.reload不起作用。
我尝试了setInterval。它使用缓存内容。所以我没有得到准确的,当前的内容。如果我手动运行我的应用程序,每次运行我的应用程序时,都会获得当前内容。但是如果我使用setInterval,它只会抛出第一次加载的相同值。是否有任何npm软件包可以做到这一点或任何其他方式来做到这一点?谢谢你的帮助。
这是代码:
var PythonShell = require('python-shell');
var pyshell = new PythonShell('demo.py');
var infy =[];
infy.length = 0;
var infyTBV; // Infy Total Buy Volume
// PythonShell.run('demo.py', function (err, results) {
// if (err) throw err;
// console.log(results);
// });
printinfy();
setInterval(function() { infyTBVfn(); }, 10000);
setInterval(function() { printinfy(); }, 10000);
function printinfy(){
pyshell.on('message', function (message){
var mainstring = message.toString();
// var substring = "totalBuyQuantity";
infy.push(mainstring);
// console.log("Inside loop: " + infy);
// if(infy.includes("totalBuyQuantity")){
// infyTBV = message;
// }
});
}
function infyTBVfn(){
var sno = 0;
infy.forEach(function(element) {
// console.log(sno+": "+element);
if (sno == 63){
infyTBV = element;
console.log("outside loop: " + infyTBV);
}
sno++;
});
// console.log("Number of items in var: "+infy.length);
}
我有另一个python文件,我在那里阅读内容。我使用' printinfy'从python文件中获取数据。功能。
我将此文件命名为demo.js.当我运行节点demo.js时,它每次运行时都会提供不同的值(这就是我想要的)。但是,如果我让它使用
自动打印出值setInterval(function(){infyTBVfn();},10000);
它打印的值与第一次打印时相同。
答案 0 :(得分:-1)
这里最好的解决方案是在.js / .css文件名末尾添加时间戳
<script src="js/myfile.js?t=<?=time()?>" type="text/javascript"></script>
或者对于刷新Div,您可以使用此示例
setInterval(function() {
var baseDate = new Date(),
seconds = baseDate.getSeconds(),
secondsElement = document.getElementsByClassName("seconds")[0];
secondsElement.innerHTML = seconds;
}, 1000);
<div class="seconds"></div>