我正在使用Flask构建一个游戏,每一轮都有倒计时时间来完成这一轮。我希望时间值每秒钟减少1,并且无需重新加载页面即可更新。倒计时本身使用time.sleep在设置生成器的下一个值之前等待1秒钟,然后将该值作为全局变量通过jsonify传递到HTML中。但是它没有起作用。任何帮助将不胜感激!
Python:
def countdownGen(t):
return (t-i for i in range(t))
def countdown(t):
gen = countdownGen(t)
while t > 0:
try:
globaltimer = next(gen)
time.sleep(1)
except StopIteration:
globaltimer = 0
@app.route('/_timer', methods=['GET'])
def timer():
global globaltimer
globaltimer = 60
countdown(globaltimer)
return jsonify(result=globaltimer)
HTML / JS:
<script type="text/javascript">
var intervalID = setInterval(update_values,1000);
$SCRIPT_ROOT = {{request.script_root|tojson|safe}};
function update_values() {
$.getJSON($SCRIPT_ROOT + '/_timer',
function(data) {
$('#result').text(data.result);
});
};
</script>
<body onload="update_values();">
<span id="result">?</span>
<script>
document.getElementById("result").innerHTML;
</script>
</body>
setInterval
行移动到声明update_values()
之后吗? - Bruno Monteiro