jQuery暂停函数执行并在暂停时执行其他操作

时间:2009-07-30 14:56:45

标签: javascript jquery function

我有这样的事情:

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

   ...

   waitAndDoSomethingElse(obj);

   ...

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


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

我希望doSomething()暂停...执行waitAndDoSomethingElse()然后继续...... 有什么想法吗?

谢谢

编辑:

我会尝试更好地解释,抱歉,如果我的问题很混乱......

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

   doSomethingElse();

   whatToShow.fadeIn('slow');
}


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

在这个示例中,whatToShow.fadeIn将在不等待doSomethingElse结束的情况下触发...

2 个答案:

答案 0 :(得分:4)

使用动画回调。所有的动画都将它们作为最后一个arg。 有关fadeIn文档,请参阅here

 $('#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毫秒后触发一个函数。

答案 1 :(得分:0)

这样做

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
}