diff --git a/03-transforming-promises/answers.js b/03-transforming-promises/answers.js index 4650c17..78c220b 100644 --- a/03-transforming-promises/answers.js +++ b/03-transforming-promises/answers.js @@ -1,48 +1,67 @@ /** - * + * * EXERCISE 1 - * - * @param {*} promise - * @param {*} transformer + * + * @param {*} promise + * @param {*} transformer * @returns {Promise} */ -function mapPromise(promise, transformer){ +function mapPromise(promise, transformer) { return new Promise((resolve, reject) => { - /* IMPLEMENT ME!! */ + promise + .then((value) => { + resolve(transformer(value)); + }) + .catch((err) => { + reject(err); + }); }); } /** - * + * * EXERCISE 2 - * - * @param {Promise} numberPromise + * + * @param {Promise} numberPromise * @returns {Promise} */ -function squarePromise(numberPromise){ - return numberPromise - .then(/* IMPLEMENT ME! */); +function squarePromise(numberPromise) { + return numberPromise.then((numberPromise) => { + return new Promise((resolve, reject) => { + if (!isNaN(numberPromise)) { + resolve(Number(numberPromise) * Number(numberPromise)); + } else { + reject(`Cannot convert '${numberPromise}' to a number!`); + } + }); + }); } /** * EXERCISE 3 - * - * @param {Promise} numberPromise + * + * @param {Promise} numberPromise * @returns {Promise} */ -function squarePromiseOrZero(promise){ - return squarePromise(promise) - .catch(/* IMPLEMENT ME! */); +function squarePromiseOrZero(promise) { + return squarePromise(promise).catch((err) => { + return new Promise((resolve, reject) => { + resolve(0); + }); + }); } /** * EXERCISE 4 - * - * @param {Promise} promise + * + * @param {Promise} promise * @returns {Promise} */ -function switcheroo(promise){ - return promise.then(/* IMPLEMENT ME */); +function switcheroo(promise) { + return promise.then( + (successCb) => Promise.reject(successCb), + (failureCb) => Promise.resolve(failureCb) + ); } /** @@ -60,4 +79,4 @@ module.exports = { squarePromise, squarePromiseOrZero, switcheroo, -}; \ No newline at end of file +};