我是 Flask 和 JavaScript 的新手,所以我们将不胜感激。我正在制作一个模拟选秀模拟器,我有一个包含 for 循环的函数,该函数模拟每个团队的选择,将选择添加到字典中,循环中断后,字典将发送到 JavaScript。
@app.route('/simulate-draft' , methods=['POST'])
def simulate_draft():
# Get info from user and send to JavaScript
for pick,info in draft_results.items():
if team == user_team:
#get pick from user
#append to draft_results
else:
#simulate pick
#append to draft_results
return jsonify(draft_results)
但是,我希望将选择一项一项发送到 JavaScript,这样用户选择的团队就可以做出选择,而不是在函数末尾发送整个字典,我读过,yield 可能是这是一个潜在的解决方案,但我在实现此方法时不断遇到错误。
您无法为一个 HTTP 请求发送多个响应。但是,您可以通过使用 Web 套接字或发送数据流来实现此目的。在前端,您需要处理这个流。
def simulate_draft():
def generate_picks():
for pick, info in draft_results.items():
if team == user_team:
yield f"data: {jsonify({pick: info})}\n\n"
else:
yield f"data: {jsonify({pick: info})}\n\n"
return Response(generate_picks(), content_type='text/event-stream')