也许我使用它错了,但我想链接3个函数,第二个函数在第一个函数完成时启动,第三个函数在第二个函数完成时启动。根据{{3}},我应该能够这样做:
$.when( first() ).then( second() ).then(third() );
他们似乎都在同一时间执行。是什么给了什么?
我也试过了:
first().then( second() ).then(third() );
这会在第一个div中消失,但不会在第二个和第三个div中消失;
答案 0 :(得分:3)
您迫使立即执行这些功能。 (顺便说一下,它们不是同时执行,而是一个接一个地执行,因为JavaScript是单线程的。)
您需要编写$.when(first).then(second).then(third)
(首先是承诺),让库执行它们。不要自己执行(这是parens所做的)。
答案 1 :(得分:1)
只需first(); second(); third();
即可。 JavaScript是单线程的。
使用when
和then
用于集成Promise
的内容,例如ajax请求(至少,这是我作为非jQuery用户的理解)
编辑:这是你的jsFiddle仅使用CSS重拍,顺便说一句^ _ ^
答案 2 :(得分:0)
如果你想在动画完成JS Fiddle之后完成每项功能,
使用:
var first = function(callBack1, callBack2){
$("#div1").fadeIn(2000, function(){callBack1(callBack2)});
}
var second = function(callBack){
$("#div2").fadeIn(2000, callBack);
}
var third = function(){
$("#div3").fadeIn(2000);
}
first(second, third);