Faire une pause en javascript, wait, sleep

Si vous faites du javascript, vous vous êtes certainement déjà posé cette question : Comment faire une pause en javascript ?

Il existe deux plugins sleep et delay, et le mix des deux 'wait' pour jquery :

Vous retrouverez tout ici : https://www.inet411.com/articles/jquery/wait-plugin.html avec des demos.

Apparemment le site est offline : voici l'article

Jquery wait plugin

I found a delay() plugin here and a pause() plugin here. Both of which were great in their own way. The pause() plugin allows for certain features that the delay() plugin does not and visa-versa.

With the pause plugin you can chain as such:

$('#some_div_id').slideDown('fast').pause(2000).slideDown('fast');

That will slide down the #some_div_id div and "pause" for 2 seconds and then slide up the #some_div_id div.

That is great but I also like to put in my own functions. ie.

$('#some_div_id').slideDown('fast').pause(2000,function(){
    $('#some_other_div_id').slideDown('fast');
});

The above will not work with the "pause" plugin but will work with the delay plugin as shown below:

$('#some_div_id').slideDown('fast').delay(2000,function(){
    $('#some__div_id').slideDown('fast');
});

So I simply combined both scripts and allowed for optional chain-ability, default options and a custom callback upon completion.

Here is the script. It's not the delay plugin and it's not the pause plugin - it's BOTH. What word means "pause" and/or "delay"? I guess WAIT will do. So here is the wait plugin for jQuery. Save this file as jquery.wait.js. It's about 4kb.

// Delay Plugin for jQuery
// - https://www.evanbot.com
// - copyright 2008 Evan Byrne
/*
 * Jonathan Howard
 * jQuery Pause
 * version 0.2
 * Requires: jQuery 1.0 (tested with svn as of 7/20/2006)
 * Feel free to do whatever you'd like with this, just please give credit where
 * credit is do.
 * pause() will hold everything in the queue for a given number of milliseconds,
 * or 1000 milliseconds if none is given.
 */
// Wait Plugin for jQuery
// https://www.inet411.com
// based on the Delay and Pause Plugin
 (function($) {
    $.fn.wait = function(option, options) {
        milli = 1000; 
        if (option && (typeof option == 'function' || isNaN(option)) ) { 
            options = option;
        } else if (option) { 
            milli = option;
        }
        // set defaults
        var defaults = {
            msec: milli,
            onEnd: options
        },
        settings = $.extend({},defaults, options);

        if(typeof settings.onEnd == 'function') {
            this.each(function() {
                setTimeout(settings.onEnd, settings.msec);
            });
            return this;
        } else {
            return this.queue('fx',
            function() {
                var self = this;
                setTimeout(function() { $.dequeue(self); },settings.msec);
            });
        }

    }
})(jQuery);

Sample Usage


Sample #1

default wait of 1 second:

$('#link1').wait().slideUp('fast');

Demo #1

Click the link, after ONE second (one second is default) the link will disappear.

Demo Link 1


Sample #2

custom wait time of 2 seconds:

$('#link2').wait(2000).slideUp('fast');

Demo #2

Click the link, after TWO seconds the link will disappear.

Demo Link 2


Sample #3

slideUp,default wait 1 second,custom function on complete to slide back down:

$('#link3').slideUp('fast').wait(function(){
    $('#link3').slideDown('slow');
});

Demo #3

Click the link, the link will immediately slideUp then wait 1 second then slideDown.

Demo Link 3


Sample #4

same as above except you can specify the time to wait instead of the default of 1 second.

$('#link4').slideUp('fast').wait(2000,function(){
    $('#link4').slideDown('slow');
});

Demo #4

Click the link, the link will immediately slideUp then wait 2 seconds then slideDown.

Demo Link 4


Sample #5

using options

$('#link5').wait({
    msec:2000,
    onEnd:function(){
        //do something else
        alert('It has been 2 seconds since you clicked the link.');
    }
});

Demo #5

Click the link, wait for 2 seconds and you will receive a confirmation message.

Demo Link 5