Skip to content

Instantly share code, notes, and snippets.

@detro
Created June 16, 2011 10:05
Show Gist options
  • Save detro/1028982 to your computer and use it in GitHub Desktop.
Save detro/1028982 to your computer and use it in GitHub Desktop.
sleepsort in (Phantom)JS
// sleepsort.js - Sort integers from the commandline in a very ridiculous way: leveraging timeouts :P
function sleepSort(array, callback) {
var sortedCount = 0,
i, len;
for ( i = 0, len = array.length; i < len; ++i ) {
setTimeout((function(j){
return function() {
console.log(array[j]);
++sortedCount;
(len === sortedCount) && callback();
};
}(i)), array[i]);
}
}
if ( phantom.args < 1 ) {
console.log("Usage: phantomjs sleepsort.js PUT YOUR INTEGERS HERE SEPARATED BY SPACES");
phantom.exit();
} else {
sleepSort(phantom.args, function() {
phantom.exit();
});
}
@detro
Copy link
Author

detro commented Jun 16, 2011

Sorry, this script is wrong.

It will fail to show anything if large timeouts are the first in the list to be parsed.

@nefarioustim
Copy link

Much nicer. :P

function sleepSort(array, callback) {
    for ( var i = 0, idx; idx = array[i++]; ) {
        setTimeout((function(num, j){
            return function() {
                console.log(' ' + num + ' '), ( j === array.length-1 ) && callback();
            };
        }(idx, i)), idx);
    }
}

if ( phantom.args < 1 ) {
    console.log("Usage: phantomjs sleepsort.js PUT YOUR INTEGERS HERE SEPARATED BY SPACES");
    phantom.exit();
} else {
    sleepSort(phantom.args, function(){ phantom.exit(); });
}

@detro
Copy link
Author

detro commented Jun 16, 2011

I think you stil suffer of my same bug.

That I just fixed and I'll now post :P

@detro
Copy link
Author

detro commented Jun 16, 2011

Now it's good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment