crazy4groovy
8/22/2012 - 3:37 PM

Promise pattern, after reading http://www.dzone.com/articles/winjs-unpacking-promises

function getRandomNumberHigherThanAsync(minimum) {
    var someNumber = (Math.random()*20) + minimum;
    return { 
        'then' : function(cb){ return cb(someNumber); }, 
        'val'  : someNumber 
    };
}

function alertMe(num) {
    alert(num);
    return { 
        'then' : function(cb){ return cb(num); }, 
        'val'  : num 
    };
}

var a = getRandomNumberHigherThanAsync;
var b = alertMe;

var final1 = a(10).then(b).then(a).then(b).then(a);
alert("final: " + final1.val);

var final2 = a(10).then(b).then(a).then(b).then(a)
.then(function(num) {
    var smallNum = num / 2;
    alert(smallNum);
    return { 
        'then' : function(cb){ return cb(smallNum); }, 
        'val'  : smallNum
    };
});
alert("final: " + final2.then(a).val);