强制Javascript函数调用等待上一个完成mvc 4

时间:2013-11-07 17:48:36

标签: javascript json asp.net-mvc-4

我尝试在javascript中执行两个函数,但第二个函数必须等待第一个函数完成。

查看:

<button id="DefinirEstab" class="btn btn-success btn-lg" data-toggle="modal" data-target="#myModal" onclick="saveContrato(); CountEstab()"> Define
 </button>

第一个函数js:

function saveContrato() {
$("#formContrato").ajaxSubmit({
    type: "POST",
    url: $("#formContrato").attr("action"),
    clearForm: false,
    success: function () {
        $("#Serie").attr("disabled", true)
    }
});
$("#DefinirEstab").attr("onclick", "CountEstab()");

}

第二个函数js(等待第一个完成):

function CountEstab() {

    //Guardar os dados na tabela serviço
    var Serie = $("#Serie").val();
    var NumDoc = $("#NumDoc").val();
    $.getJSON("/Contrato/saveCabecalhoServicos", {
        serie: Serie, numDoc: NumDoc, idForn: window.IdFornecedor, idFilial: e
    });

} else {
    alert("Falta de dados obrigatórios preenchidos!!");
}

}

2 个答案:

答案 0 :(得分:1)

CountEstab()内拨打success function

HTML

<button id="DefinirEstab" class="btn btn-success btn-lg" data-toggle="modal" data-target="#myModal"> Define
</button>

的javascript

$('#DefinirEstab').on('click', function() { 
    saveContrato();
    return false;
});   

function saveContrato() {
    $("#formContrato").ajaxSubmit({
        type: "POST",
        url: $("#formContrato").attr("action"),
        clearForm: false,
        success: function () {
            $("#Serie").attr("disabled", true);
            CountEstab();
        }
    });
}

答案 1 :(得分:1)

将第二个函数作为回调函数传递给第一个函数。

function saveContrato(callback) {
    $("#formContrato").ajaxSubmit({
        type: "POST",
        url: $("#formContrato").attr("action"),
        clearForm: false,
        success: function () {
            $("#Serie").attr("disabled", true)
            callback();
        }
    });
    $("#DefinirEstab").attr("onclick", "CountEstab()");
}

saveContrato(CountEstab)