JavaScript
TypeScript
カバー

【ネタ】JavaScript(とTypeScript)でSleep Sort

More than 1 year has passed since last update.

http://qiita.com/lovee/items/9701151633d61e7ed4e3

カバーです。あくまでネタです。

var data = [5, 3, 6, 3, 6, 3, 1, 4, 7];

var sleepSort = function(arr){
    return new Promise(function(resolve,reject){
        var result = [];
        arr.forEach(function(d){
            setTimeout(function(){
                result.push(d);
                if(result.length === data.length) resolve(result);
            },d);
        });
    });
}

sleepSort(data).then(function(d){console.log(d)});
// [1, 3, 3, 3, 4, 5, 6, 6, 7]

...だからネタだってば。


追記。やっぱ素のJSだと気持ち悪いので一応TypeScriptでも書いておく。
コンパイル結果はほぼ同一だけど、慣れてしまうとこっちの方が書いてて安心感ある。

let data: number[] = [5, 3, 6, 3, 6, 3, 1, 4, 7];

let sleepSort = (arr: number[]) =>
    new Promise( (resolve, reject) => {
        let result: number[] = [];
        arr.forEach( (d: number) => {
            setTimeout( () => {
                result.push(d);
                if(result.length === data.length) resolve(result);
            },d);
        });
    });

sleepSort(data)
    .then((d) => console.log(d));