Promise Article: Letter ordering

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);
            }
        });
    })
}

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 Q.all([upperCasePromiseAPI(alphabets[0]),upperCasePromiseAPI(alphabets[1]),upperCasePromiseAPI(alphabets[2])]);
}


// Dynamic Cases
var dynamicUpperCase = function(cb){
    var arr = [],
        cnts = 0;
    
    alphabets.forEach(function(alp,index){
        upperCaseAPI(alp,function(data){
            
            arr[index] = data;
            cnts++;
            
            if(cnts ===...