在回调中同步jquery动画

时间:2011-03-13 20:05:54

标签: javascript jquery synchronization

我有一个runner函数,只有当被调用回调中的所有东西(也就是动画)都完成时才会返回。

function runner(callback) {
  callback.call();
  return; // only return when callback is finished with everything.
}

我考虑过使用jQuery queue函数,但我无法使用它。甚至可以存档。 callback是一个黑盒子。 runner无法知道那里有什么。

1 个答案:

答案 0 :(得分:0)

你真正想要的是callback采取自己的回调。 (我知道你说它是一个黑盒子,但它需要是一个不同的黑盒子。)然后你不要等待回调返回,你只需将延续传递给它,callback负责将该延续分配给动画上的完成处理程序(或其任何操作)。所以而不是:

doSomeStuff();
runner(callback);
doMoreStuff();

你想要

doSomeStuff();
callback.call(doMoreStuff);

Here's对相关问题的回答。更一般地说,这种模式是continuation-passing style,并且是jQuery处理事物的核心。