Skip to main content
 首页 » 编程设计

javascript之在服务器上运行长进程时在页面上显示动画

2025年05月04日52cyq1162

当一个长进程(例如下面的 Python Flask 路由)正在运行并在完成后消失时,我想在我的页面上实现一个动画。我该怎么做?

@app.route('/test', methods=['GET','POST']) 
def test(): 
    if request.method=="POST": 
        if request.form.get('updatepaths')=='Update' and form.validate_on_submit(): 
            Fname = form.name.data 
            Lname=form.name2.data 
            TimeConsumingFunction(Fname) 
            TimeConsumingFunction(Lname) 

请您参考如下方法:

您需要使用 JavaScript 发出请求,显示微调器,然后在请求完成后移除微调器。例如,使用 jQuery,此示例在处理请求时显示“等待”(或您放置在那里的任何动画)。

<a href="{{ url_for('test') }}" id="run">Run</a> 
<span id="wait">Waiting</span> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<script> 
    var run_link = $('a#run'); 
    var run_wait = $('span#wait'); 
    run_wait.hide(); 
 
    $('a#run').click(function(event) { 
        event.preventDefault(); 
 
        run_link.hide() 
        run_wait.show(); 
 
        $.post($(this).attr('href'), function(data) { 
            run_wait.hide() 
            run_link.show(); 
        }); 
    }); 
</script> 

您还可以使用任务队列,例如 Celery在后台运行任务,而不是等待请求完成。这是有益的,因为任务可以继续运行比请求超时更长的时间。