也许我用错了,但我想链接 3 个函数,第二个函数在第一个函数完成时开始,第三个函数在第二个函数完成时开始。根据文档,我应该可以这样做:
$.when( first() ).then( second() ).then(third() );
他们似乎都在同时执行。是什么赋予了?
我也试过:
first().then( second() ).then(third() );
这将在第一个 div 中消失,但不会在第二个和第三个 div 中消失;
也许我用错了,但我想链接 3 个函数,第二个函数在第一个函数完成时开始,第三个函数在第二个函数完成时开始。根据文档,我应该可以这样做:
$.when( first() ).then( second() ).then(third() );
他们似乎都在同时执行。是什么赋予了?
我也试过:
first().then( second() ).then(third() );
这将在第一个 div 中消失,但不会在第二个和第三个 div 中消失;
您正在强制立即执行这些功能。(顺便说一下,它们不是同时执行的,而是一个接一个地快速执行,因为 JavaScript 是单线程的。)
您需要编写$.when(first).then(second).then(third)
(首先是一个承诺),然后让库执行它们。不要自己执行它们(这是括号所做的)。
编辑:哦,没看到小提琴。是的,肖恩约翰逊说的。
只是first(); second(); third();
会工作得很好。JavaScript 是单线程的。
when
and用于then
集成的事物Promise
,例如 ajax 请求(至少,这是我作为非 jQuery 用户的理解)
编辑:顺便说一下,这是您的jsFiddle仅使用 CSS 重制的 ^_^
如果要在动画完成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);