Q.JS playground
by colintoh
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.2.0/q.js"></script>
JavaScript
var makeBeef = function(animal,cb){
setTimeout(function(){
if(animal === "cow"){
cb("beef");
} else {
throw("Not a cow");
}
},0);
}
try {
makeBeef("co",function(meat){
console.log(meat);
});
} catch(e){
console.log("haha",e);
}
var cutLettuce = function(cb){
setTimeout(function(){
cb("Chopped Lettuce");
},0);
}
var grillBeef = function(cb){
setTimeout(function(){
cb("Grilled Beef");
},0);
}
var toastBun = function(cb){
setTimeout(function(){
cb("Toasted Bun");
},0);
}
var makeBurger = function(lettuce,beef,bun){
if(lettuce === "Chopped Lettuce" && beef === "Grilled Beef" && bun === "Toasted Bun"){
return "Big Mac";
} else {
return "No Burger";
}
}
cutLettuce(function(lettuce){
grillBeef(function(beef){
toastBun(function(bun){
console.log(makeBurger(lettuce,beef,bun));
});
});
});
var cutLettucePromise = function(){
return Q.Promise(function(resolve,reject){
setTimeout(function(){
resolve("Chopped Lettuce");
},0);
});
}
var grillBeefPromise = function(){
return Q.Promise(function(resolve,reject){
setTimeout(function(){
resolve("Grilled Beef");
},0);
});
}
var toastBunPromise = function(){
return Q.Promise(function(resolve,reject){
setTimeout(function(){
resolve("Toasted Bun");
},0);
});
}
Q.all([cutLettucePromise(),grillBeefPromise(),toastBunPromise()]).spread(makeBurger).then(function(msg){
console.log(msg);
});
console.log('shout');