Q generators
by colintoh
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.2.0/q.js"></script>
JavaScript
// Write a function that returns a array with Uppercase alphabet and in the same ordering. Use the upperCase API.
var alphabets = ['a','b','c'];
var upperCaseAPI = function(alphabet,cb){
var timeout = Math.random().toFixed(3) *1000;
setTimeout(function(){
if(!alphabet.toUpperCase) { return cb(new Error(alphabet+' is not a string.'));}
cb(alphabet.toUpperCase());
},timeout);
};
upperCasePromiseAPI = function(alphabet){
return Q.Promise(function(resolve,reject){
upperCaseAPI(alphabet,function(data){
if(data instanceof Error){
reject(data);
} else {
resolve(data);
}
});
})
}
Q.spawn(function* (){
var letter1 = yield upperCasePromiseAPI(alphabets[0]);
var letter2 = yield upperCasePromiseAPI(alphabets[1]);
var letter3 = yield upperCasePromiseAPI(alphabets[2]);
var data = yield Q.all([upperCasePromiseAPI(alphabets[0]),upperCasePromiseAPI(alphabets[1]),upperCasePromiseAPI(alphabets[2])]);
console.log(data);
});
upperCasePromiseAPI(1).then(function(letter){
console.log(letter);
}).catch(function(err){
console.log("error la:", err);
});
//Error Handling not catch
try {
upperCaseAPI(1,function(data){
upperCaseAPI(3,function(data1){
console.log(data1);
});
});
} catch(e){
console.log(e);
}
/*upperCaseAPI('a',function(letter){
console.log(letter);
});
upperCaseAPI('b',function(letter){
console.log(letter);
});
upperCaseAPI('c',function(letter){
console.log(letter);
}); */
// Fixed Cases
var fixedUpperCase = function(cb){
upperCaseAPI(alphabets[0],function(letter1){
upperCaseAPI(alphabets[1],function(letter2){
upperCaseAPI(alphabets[2],function(letter3){
cb([letter1,letter2,letter3]);
})
})
});
}
var fixedUpperCasePromise = function(){
return...