About 1 to 2 hours
Apprentices will be able to:
new Promise(((resolve, reject) => {}))promise.then()Promise.all()fetch (like AJAX but built into most browsers)function counter(cb) {
    console.log('inside counter function ');
    cb(); //here callback function gets called by counter()
}
counter(function(){
    console.log('inside callback function');
});
function counter(cb){
  console.log('inside counter function ');
  cb();
}
counter(function(){
  console.log('inside callback function');
  counter(function(){
    console.log('inside callback function');
   });
});
There’s got to be an easier way to write things that depend on each other, right? Promises.
Promise and pass a callback to its then method. Create callback that uses setTimeout to mimic latency (network/database delay). The callback passed to setTimeout will resolve the promise (use the parameter).then with a callback that console.logs something to show the flow of execution.const isMomHappy = true;
// Promise
const willIGetNewPhone = new Promise(
    (resolve, reject) => {
        if (isMomHappy) {
            const phone = {
                brand: 'Samsung',
                color: 'black'
            };
            resolve(phone);
        } else {
            const reason = new Error('mom is not happy');
            reject(reason);}
     }
);
const showOff = function (phone) {
    const message = 'Hey friend, I have a new ' +
                phone.color + ' ' + phone.brand + ' phone';
    return Promise.resolve(message);
};
// call our promise
const askMom = function () {
    willIGetNewPhone
        .then(showOff)
        .then(fulfilled => console.log(fulfilled))
        .catch(error => console.log(error.message));
};
askMom();
setTimeout times.catch method (like how you did with then) to this promise, and pass another callback. Which promise parameter can you use to pass control from then to catch?status.status again, has it changed?