I want to call some functions but waiting for the previous one has finished.
I know jQuery provides a callback argument in several functions, but I want to learn how implement this behaviour in my own jQuery plugin. So this is the case:
After read answers from my previous question I wrote this:
(function(callback){
$('#art1').animate({'width':'1000px'},1000);
callback();
})((function(callback2){
$('#art2').animate({'width':'1000px'},1000);
callback2();
})(function(){
$('#art3').animate({'width':'1000px'},1000);
}));
But not working. I’ve tried again and wrote this:
animate1(function(){
animate2(function(){
animate3();
})
});
function animate1(callback){
$('#art1').animate({'width':'1000px'},1000);
callback();
}
function animate2(callback){
$('#art2').animate({'width':'1000px'},1000);
callback();
}
function animate3(callback){
$('#art3').animate({'width':'1000px'},1000);
callback();
}
But still not working. Three animates still starting at same time. I want they were called one after other. But without using:
$('#art1').animate({'width':'1000px'},1000,'linear',function(){
$('#art2').animate({'width':'1000px'},1000,'linear',function(){
$('#art3').animate({'width':'1000px'},1000);
});
});
That’s what the
Bufferis for:Then we just create a task handler for the animation, an animation task and append the tasks to the buffer.
This uses the magic of jQuery deferred to run tasks one after the other. It’s probably a lot easier to just chain them.
Also this would work: