diff --git a/01-making-promises/answers.js b/01-making-promises/answers.js index 36dc24b..f0728d7 100644 --- a/01-making-promises/answers.js +++ b/01-making-promises/answers.js @@ -1,49 +1,59 @@ - /** - * + * * EXERCISE 1 - * + * * @returns {Promise<3>} */ -function makePromiseResolveWith3(){ +function makePromiseResolveWith3() { /* IMPLEMENT ME! */ + return new Promise((resolve, reject) => { + resolve(3); + }); } /** - * + * * EXERCISE 2 - * + * * @returns {Promise<,"Boo!">} */ -function makePromiseRejectWithBoo(){ +function makePromiseRejectWithBoo() { /* IMPLEMENT ME! */ + return new Promise((resolve, reject) => { + reject("Boo!"); + }); } - /** - * + * * EXERCISE 3 - * + * * @param {boolean} itShouldResolve - Whether the promise should resolve or reject * @returns {Promise} */ -function makePromiseWithConstructor(itShouldResolve){ +function makePromiseWithConstructor(itShouldResolve) { return new Promise((resolve, reject) => { /* If itShouldResolve is true, call resolve */ /* If itShouldResolve is false, call reject */ + itShouldResolve ? resolve(3) : reject("Boo!"); }); } /** - * + * * EXERCISE 4 * - * @param {any} value - * @param {number} delayInMs + * @param {any} value + * @param {number} delayInMs * @return {Promise} - A promise that will resolve with the value after delayInMs milliseconds */ -function makeDelayPromise(value, delayInMs){ +function makeDelayPromise(value, delayInMs) { /* Return a promise that resolves with the value after delayInMs */ + return new Promise((resolve, reject) => { + setTimeout(() => { + resolve(value); + }, delayInMs); + }); } module.exports = { @@ -51,4 +61,4 @@ module.exports = { makePromiseRejectWithBoo, makePromiseWithConstructor, makeDelayPromise, -}; \ No newline at end of file +}; diff --git a/02-consuming-promises/answers.js b/02-consuming-promises/answers.js index f3c87b4..b8632b2 100644 --- a/02-consuming-promises/answers.js +++ b/02-consuming-promises/answers.js @@ -8,6 +8,7 @@ */ function waitForPromise(promise, action){ /* IMPLEMENT ME */ + return promise.then(action) } /** * @@ -19,6 +20,7 @@ function waitForPromise(promise, action){ */ function consumePromise(promise, consumer, handler){ /* IMPLEMENT ME! */ + promise.then(consumer).catch(handler) } /** diff --git a/03-transforming-promises/answers.js b/03-transforming-promises/answers.js index 4650c17..5d29c4d 100644 --- a/03-transforming-promises/answers.js +++ b/03-transforming-promises/answers.js @@ -9,7 +9,12 @@ function mapPromise(promise, transformer){ return new Promise((resolve, reject) => { /* IMPLEMENT ME!! */ - }); + promise.then(result => { + resolve(transformer(result)) + }).catch(err => { + reject(err) + }) +}) } /** @@ -19,11 +24,20 @@ function mapPromise(promise, transformer){ * @param {Promise} numberPromise * @returns {Promise} */ -function squarePromise(numberPromise){ +function squarePromise(numberPromise) { return numberPromise - .then(/* IMPLEMENT ME! */); + .then(res => { + return new Promise((resolve, reject) => { + if (!isNaN(res)) { + resolve(res * res) + } else { + reject(`Cannot convert '${res}' to a number!`) + } + }) + }) } + /** * EXERCISE 3 * @@ -32,7 +46,11 @@ function squarePromise(numberPromise){ */ function squarePromiseOrZero(promise){ return squarePromise(promise) - .catch(/* IMPLEMENT ME! */); + .catch(err => { + return new Promise((resolve, reject) => { + resolve(0) + }) + }); } /** @@ -42,7 +60,7 @@ function squarePromiseOrZero(promise){ * @returns {Promise} */ function switcheroo(promise){ - return promise.then(/* IMPLEMENT ME */); + return promise.then(successCb => Promise.reject(successCb), failureCb => Promise.resolve(failureCb)); } /**