2

也许我用错了,但我想链接 3 个函数,第二个函数在第一个函数完成时开始,第三个函数在第二个函数完成时开始。根据文档,我应该可以这样做:

$.when( first() ).then( second() ).then(third() );

他们似乎都在同时执行。是什么赋予了?

我的小提琴

我也试过:

first().then( second() ).then(third() );

这将在第一个 div 中消失,但不会在第二个和第三个 div 中消失;

4

3 回答 3

3

您正在强制立即执行这些功能。(顺便说一下,它们不是同时执行的,而是一个接一个地快速执行,因为 JavaScript 是单线程的。)

您需要编写$.when(first).then(second).then(third)(首先是一个承诺),然后让库执行它们。不要自己执行它们(这是括号所做的)。

编辑:哦,没看到小提琴。是的,肖恩约翰逊说的。

于 2013-03-25T01:22:21.003 回答
1

只是first(); second(); third();会工作得很好。JavaScript 是单线程的。

whenand用于then集成的事物Promise,例如 ajax 请求(至少,这是我作为非 jQuery 用户的理解)

编辑:顺便说一下,这是您的jsFiddle仅使用 CSS 重制的 ^_^

于 2013-03-25T01:15:52.737 回答
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);
于 2013-03-25T01:32:15.097 回答