2 ms·
So you should never think of "sleep" in javascript. Since the language is single-threaded, really if you pause the script you're pausing the entire environment
by geuis 16y ago
So you should never think of "sleep" in javascript. Since the language is single-threaded, really if you pause the script you're pausing the entire environment (whether its in the browser or on the server in something like Node.js).
But, to answer your question:
// some code runs here
var continue = function(data){
//more code runs in here after sleep
}
setTimeout(function(){
continue(data);
},2000);
A different pattern:
var obj = {
sleep: function(fn, time){
setTimeout(fn, time );
},
func1: function(data){
console.log('Continuing');
},
init: function(data){
console.log('Starting');
obj.sleep(obj.func1, 2000);
}
}
obj.init()
- psykotic 16y agoIMO, a better pattern is to use lexical closures in continuation-passing style to share state: function sleep(time, continuation) { setTimeout(continuation, time); } function start_process(x) { var y = foo(x); sleep(1000, function() { var z = bar(x, y); sleep(2000, function() { baz(x, y, z); });}); } start_process(42);
- geuis 16y agoExcept that you basically wrote the same thing as my second example, except your functions aren't namespaced and are polluting globals.