【发布时间】:2011-12-12 01:48:55
【问题描述】:
我有一个函数需要按顺序调用一些函数。首先,在 DOM 节点上调用 fadeOut。在回调中,DOM 节点被分离。这是功能#1。但是,完成之后,我需要调用函数#2。
所以:
var func1 = function() {
console.log('func 1 start');
elt.fadeOut(2000, callback);
console.log('func 1 end');
};
var func2 = function() {
console.log('func 2 start');
console.log('func 2 end');
};
var callback = function() {
console.log('func 1 callback start');
elt.detach();
console.log('func 1 callback end');
};
func1();
func2();
以上输出:
func 1 start
func 1 end
func 2 start
func 2 end
func 1 callback start
func 1 callback end
我需要在调用func2() 之前完成回调。我该怎么做?
这里的工作示例:http://jsfiddle.net/y2vj8/2/
[编辑]:
好的,似乎有必要解释一下为什么我希望在回调完成后调用func2(),否则我预计不会很快得到答案:(。
func1 淡出一个 div(称为 div1)然后从 DOM 中分离出来。这是一个公开的功能。
func2 是对某个事件的用户定义回调(点击其他 div,例如 div2)。它可能是未定义的,但它绝对可以包含任何代码。
当div2被点击时,func1()被调用,然后func2()被求值,如果是函数,也被调用。
如果用户手动调用func1(),则永远不会调用func2()。
func1 不知道 div2 上的点击事件,因此无法检查是否应该调用 func2。
【问题讨论】:
-
为什么不在回调结束时夹住
func2()? -
相信我,如果我能做到,我什至不会发布这个问题。
-
你可以使用 setInterval 并每次检查回调是否完成,但我不太喜欢这个想法
-
那么你想要func 1 start, func 1 end, func1 callback start, func1 callback end and then fun2 start func2 end而不在func1 callback中调用func2?
-
没错。我希望整个 func1 以及动画的回调在我继续调用任何其他函数(此处为 func2)之前完成。
标签: javascript jquery animation callback