【问题标题】:jQuery pause function execution and do something else while pausedjQuery 暂停函数执行并在暂停时执行其他操作
【发布时间】:2010-11-15 11:35:14
【问题描述】:

我有这样的事情:

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 结束的情况下触发...

【问题讨论】:

  • 你应该改变你的问题更清楚。我们无法准确理解您想要什么。也许是另一个例子,或者一个测试用例。

标签: javascript jquery function


【解决方案1】:

使用动画回调。所有动画都将它们作为最后一个参数。 请参阅 here 以获取 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 毫秒后触发函数。

【讨论】:

  • 是的......我知道效果中的回调......我已经把效果只是一个例子......我需要做的是完全相同的事情,但具有通用功能。 ..
  • 真的,一个愚蠢的问题,不要对你不友好的 cmets / 回复有任何好处
【解决方案2】:

这样做

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
}

【讨论】:

  • 好吧,我没有得到反对票......这个解决方案对他的问题是正确的。如果有人有更好的没有问题,但不赞成票意味着错误的解决方案,应该解释。否则帮助有什么意义?
  • 然后传递回调然后您可以选择何时调用它们...根据我的回答
  • $('somediv').show();即使在 waitAndDoSomethingElse 函数中,它也会最后执行。
  • 但它不会等待淡入完成。我认为他想要那个 - 但不确定:)
  • 如果 .. 是回调... 这甚至不是问题,只需阅读文档。
猜你喜欢
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多