создать функцию обратного вызова вместо использования флага var для управления выполнением определенной функции - PullRequest
1 голос
/ 11 января 2010

У меня есть такой фрагмент кода:


var nbrPrevArt = $("#accordion > div .accordionPanel").size();
var processing = false;

if (nbrPrevArt == 0) {
    processing = true;
    getArticlesPreview();//Fetches articles first
}

//loop that makes the browser to wait  until finishes "getArticlesPreview()" 
while(!processing)
{
}

//getArticlesPreview() is finished now we can safely execute this step
$.ajax({
    type: "GET",
    url: "http://mydomain.com/somepage.htl",
    success: function(data) { alert(data);}
});


//-----------------------------------

function getArticlesPreview()
{
    //lenghty operation
    processing = false;
}

выглядит не очень практично, потому что я использую цикл, чтобы заставить его ждать, пока функция не будет выполнена, чтобы выполнить следующий шаг.

Есть ли способ определить сообщение обратного вызова, которое будет вызываться после выполнения первой операции, и чтобы мой второй шаг (вызов $ .ajax) внутри него работал правильно?

Заранее спасибо! Тейшейра

1 Ответ

3 голосов
/ 11 января 2010

Вы можете создать свой обратный вызов самостоятельно, используя функцию apply. Вы просто должны добавить параметр callback в getArticlesPreview и поместить функцию внутри этого обратного вызова.

Это может выглядеть так:

function makeAjax()
{
    $.ajax({
       type: "GET",
       url: "http://mydomain.com/somepage.htl",
      success: function(data) { alert(data);}
    });
}

function getArticlesPreview(callback)
{
    //lenghty operation

    callback.apply(this)
}

var nbrPrevArt = $("#accordion > div .accordionPanel").size();

if (nbrPrevArt == 0) {
    getArticlesPreview(makeAjax);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...