如何在Ajax请求完成之前停止代码?

时间:2015-05-30 19:11:43

标签: jquery ajax asynchronous

我这里有一个大问题。在继续我的其余代码之前,我需要等待我的ajax请求。我在2天内搜索了一下,我找到了一个可能的解决方案,可能会工作。我已经尝试了很多方法来解决我的问题,现在我需要帮助。 .when()。done()方法只在另一个函数完成时执行一个函数,并且不会停止执行我的代码。我不想使用$ .ajax {async:false}。我试过了,不建议使用它。

首先,我执行calculerTauxUtilisation()方法,谁被称为lancerRequeteObtenirTaux()多次,在这里我想等待traiterRequeteObtenirTaux()前执行placerTauxUtilisation()。我的问题是lancerRequeteObtenirTaux执行了几次而没有执行traiterRequeteObtenirTaux()和placerTauxUtilisation()

感谢您的帮助!

埃米尔

var elementHoublon = null;

function calculerTauxUtilisation()
{

    var lignesHoublons = $('[id = "elementHoublon"]');
    lignesHoublons.each(function (index, item) {
    elementHoublon = $(item);
    $.when(lancerRequeteObtenirTaux(elementHoublon.children().eq(0).children().eq(0))).done(function (taux) { placerTauxUtilisation (taux) });
    });

}

function lancerRequeteObtenirTaux(item)
{
    return $.ajax({
        url: "/Recettes/tauxUtilisation/",
        data: "url=" +     "http://sv54.cmaisonneuve.qc.ca/brewmaster/houblons/tauxutilisation?" + "og=" +     $("#OGReel").val().replace(",", ".") + ",duree=" +     item.parent().next().next().next().next().children().eq(0).val(),
        success: traiterRequeteObtenirTaux
      })
}


function traiterRequeteObtenirTaux(taux)
{
    triggerA = triggerA + 1;
    var tauxUtilisation = taux;
}

function placerTauxUtilisation(taux)
{
    elementHoublon.children().eq(5).children().eq().val(taux);
}

1 个答案:

答案 0 :(得分:0)

一种可能适合您的简单(和未经测试)方法:

function lancerRequeteObtenirTaux(item)
{
    return $.ajax({
        …
        success: function(taux){
            traiterRequeteObtenirTaux(taux);
            placerTauxUtilisation(taux);
        }
    })
}
相关问题