我有一个runner
函数,只有当被调用回调中的所有东西(也就是动画)都完成时才会返回。
function runner(callback) {
callback.call();
return; // only return when callback is finished with everything.
}
我考虑过使用jQuery queue
函数,但我无法使用它。甚至可以存档。 callback
是一个黑盒子。 runner
无法知道那里有什么。
答案 0 :(得分:0)
你真正想要的是callback
采取自己的回调。 (我知道你说它是一个黑盒子,但它需要是一个不同的黑盒子。)然后你不要等待回调返回,你只需将延续传递给它,callback
负责将该延续分配给动画上的完成处理程序(或其任何操作)。所以而不是:
doSomeStuff();
runner(callback);
doMoreStuff();
你想要
doSomeStuff();
callback.call(doMoreStuff);
Here's对相关问题的回答。更一般地说,这种模式是continuation-passing style,并且是jQuery处理事物的核心。