如何在继续下一部分代码之前等待任务完成

时间:2016-04-01 12:38:53

标签: javascript

我有一个“保存”按钮,当用户点击我页面上的下一个/上一个按钮时,我需要触发该按钮。当用户点击下一步移动到另一个窗口时,我触发一个“保存”按钮,保存用户已经改变的疯狂和其他一些功能。问题是当我单击下一个或上一个按钮时,触发了保存按钮,但需要时间来保存更改并且代码继续执行。有没有办法可以判断保存是否已完成或以某种方式延迟我的代码?我知道我可以做一个时间延迟但是对于每个用户来说可能会有所不同并且效率低下。这是一个例子:

function prev_next(){
     $('#save').trigger('click');     //This line could take 2-5 seconds to finish
     //Other code here that opens next window
}

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

您必须编辑通过单击保存按钮触发的功能,以允许回调功能。 (我假设有一个ajax请求被发送到某个服务器来保存)。

示例:

保存功能:

function saveEdits(callback){
    $.ajax({
        url: 'urltosavepage.php',
        method: 'post',
        data: {
            somevar: 'somevalue'
        },
        success: function(response)
        {
            callback();
        }
    });
}

prev_next功能:

function prev_next()
{
    saveEdits(function(){
        // Code that is here will not get executed until after the ajax request is completed, and the success function gets called.
        //Other code here that opens next window
    });
}