04 - async-await

//add async before any function declaration to treat it as a Promise function:
async function add(x,y) {
    
    if (typeof x !== 'number' || typeof y !== 'number') {
        throw "INVALID NUMBER TYPE";
    }

    return x + y;
}

add(9, 4)
    .then(data => {
        console.log("add() function: Inside Resolve \n\nadd() function: ")
        console.log(data);
    })
    .catch(err => {
        console.log("add() function: Inside Reject")
        console.log("add() function: Something Went Wrong\n\nadd() function:");
        console.log(err);
    })


//---------------------------------------------------------------------------------------------------


//using async-await:    
async function getBitCoinPrice() {
    console.log("getBitCoinPrice(): Starting the getBitCoin Function=>");

    const response=await fetch('https://api.cryptonator.com/api/ticker/btc-usd');
    
    console.log("getBitCoinPrice(): Got the Response from fetch.");

    console.log("getBitCoinPrice(): Now, Parsing response for Data...");
    
    const data = await response.json();
    console.log("getBitCoinPrice(): Parsing Completed.");

    console.log('getBitCoinPrice(): \nCurrent price: ');
    console.log(data.ticker.price);
    console.log("getBitCoinPrice Function completes, ALL DONE!!");

}

//calling getBitCoinPrice() function
getBitCoinPrice()
    .then(() => {
        console.log("getBitCoinPrice(): Resolved");
    })
    .catch(err => {
        console.log("getBitCoinPrice(): AAAHHHH! ERROR\n\ngetBitCoinPrice(): ");
        console.log(err);
    })

// Below will be printed first because 
// of the delay happening in getting the response from Promises
console.log("AFTER FUNCTION");
console.log("AFTER FUNCTION");
console.log("AFTER FUNCTION");
console.log("AFTER FUNCTION");

            
                Great. Hurray! 
                You have completed Lecture-08
                You can go back to HomePage and proceed to Lecture-09
                Thank You.