JQuery приостановить выполнение функции и сделать что-то еще во время паузы - PullRequest
0 голосов
/ 30 июля 2009

У меня есть что-то вроде этого:

function doSomething() {
   var obj = $('somediv');

   ...

   waitAndDoSomethingElse(obj);

   ...

   $('somediv').show();
   ...
}


function waitAndDoSomethingElse(obj) {
   obj.fadeIn();
   ....
}

Я хочу, чтобы doSomething () приостановил ... выполнить waitAndDoSomethingElse () и затем продолжил ... Есть идеи?

Спасибо

EDIT:

Я постараюсь объяснить лучше, извините, если мой вопрос был перепутан ...

function showSomething() {
   var whatToShow = $('#div');

   doSomethingElse();

   whatToShow.fadeIn('slow');
}


function doSomethingElse() {
   $('#someDiv').appendTo($('#someOtherDiv'));
   $('#somethingElse').fadeIn('slow');
   ...
}

В этом примере whatToShow.fadeIn сработает, не дожидаясь окончания doSomethingElse ...

Ответы [ 2 ]

4 голосов
/ 30 июля 2009

Используйте анимацию обратных вызовов. Все анимации имеют их как последний аргумент. См. здесь для документов fadeIn.

 $('#someElement').fadeIn('slow', callbackFn);


   function callbackFn(){
       //executed after the fadeIn is complete
   }

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

var callbackFn = function(){ //do something };

doSomething( callbackFn )

function doSomething( callback ){

    doOtherStuff();
    //call the callback
    callback && callback()

}

Другой вариант - использовать window.setTimeout для запуска функции через x миллисекунд.

0 голосов
/ 30 июля 2009

Сделай это

function doSomething() {
    var obj = $('somediv');
    ...
    waitAndDoSomethingElse(obj);
}


function waitAndDoSomethingElse(obj) {
    obj.fadeIn();
    // if you want a pause here you can also add the next call in a setTimeout()
    $('somediv').show(); // this call is executed only after
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...