jQuery – 按顺序运行多个方法

如果我做:

method(); method(); 

两个调用将并行运行(同时)

我只想制作第二种方法(); 等到第一个方法(); 在开始之前完成,并动态地做,因为我不知道我将启动method()多少次; 在同一时间 。

可能吗?

例如,那些在我能看到的同时运行… http://jsfiddle.net/Lcgb8/

如果您返回Deferred then可以使用then

例如

 function method() { var d = $.Deferred(); //do something async setTimeout(function () { d.resolve('some data'); //inform listeners that the process is completed }, 2000); return d; //return the deferred object } 

然后你可以这样做:

 method().then(method).then(method).then(method); 

请注意,每个调用的返回值将分别作为第一个参数传递给下一个调用。

编辑:这是一个关于如何动态排队异步操作的示例。

小提琴

 function changeColorAsync(color) { var d = $.Deferred(); setTimeout(function () { $('body').css('background', color); d.resolve(); }, 4000); return d; } $(function () { $('#color-form').on('submit', function (e) { var color = $(this).find(':checked').val(), d; d = d? d.then(changeColorAsync.bind(this, color)) : changeColorAsync(color); return false; }); }); 

这是使用transitionend的顺序动画

     animation    

它现在修复了一点错误..

支持无限div,它是使用低资源的无限循环。 =)

你的method()将是我的next()

如果有人想要jsfiddle它…我不使用它。

ps。:纯javascript(无jquery)+ css3(带-webkit前缀);

http://jsfiddle.net/4eujG/

看看jQuery.queue() 。

使用callback

 var test = function (letter, callback) { console.log(letter); if (typeof callback !== 'undefined') { callback(); } }; 

现在你可以运行它:

 test('a', function () { test('b', function () { test('c') }); }); 

控制台的结果是:

 a b c 

对你有帮助吗?

  $( "div" ).promise().done(function() { $( "p" ).append( " Finished! " ); }); 

希望这个例子必须清除你的查询

现场演示

Javascript和大多数其他语言按顺序运行代码。

因此,它们不会同时运行。

实际上,不可能同时运行两个不同的Javascript代码。 但是,在许多其他语言中,可以使用线程。

但是,如果它们进行AJAX调用,则两个函数调用的相应服务器端代码将同时运行。 为了防止这种情况,您需要使第一个函数接受一个回调参数并将其传递给第二个函数。