From 026764535e1d43f5ad01b5a00e4b204f31e32a7e Mon Sep 17 00:00:00 2001 From: nprimo Date: Tue, 28 Feb 2023 15:32:08 +0100 Subject: [PATCH] feat(kept-promise): add subject --- js/tests/kept-promise_test.js | 6 +++ subjects/devops/kept-promise/README.md | 52 ++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 js/tests/kept-promise_test.js create mode 100644 subjects/devops/kept-promise/README.md diff --git a/js/tests/kept-promise_test.js b/js/tests/kept-promise_test.js new file mode 100644 index 000000000..dd35de170 --- /dev/null +++ b/js/tests/kept-promise_test.js @@ -0,0 +1,6 @@ +import keptPromise + +const getImportantInfo = _ => + new Promise(resolve => { + setTimeout(_ => resolve(Math.round(Math.random() * 10)), 1000) + }) diff --git a/subjects/devops/kept-promise/README.md b/subjects/devops/kept-promise/README.md new file mode 100644 index 000000000..1481ea0b1 --- /dev/null +++ b/subjects/devops/kept-promise/README.md @@ -0,0 +1,52 @@ +## kept-promise + +### Instructions + +Thing in your code does not always happen as fast as you would like. + +Sometimes it is important to wait for a function to finish before keep going on with your life. + +Create an asynchronous function `processInfo` in the file `kept-promise.js`. The function `processInfo` will take an asynchronous function as an input, and it will print the message `Ok!` if the return of the input function is zero or a multiple of two, `Error!` otherwise. + +The following function can be used as an example of input function for `processInfo`: + +```js +const getImportantInfo = _ => + new Promise(resolve => { + setTimeout(() => resolve(Math.round(Math.random() * 10)), 1000) + }) +``` + +> Assume that your function will always get a valid input function + +### Example + +The following script `main.js` can be used to test your function: + +```js +import processInfo from './kept-promise.js' + +const getImportantInfo = _ => + new Promise(resolve => { + setTimeout(() => resolve(Math.round(Math.random() * 10)), 1000) + }) + +console.log(await processInfo(getImportantInfo)) +``` + +The output should be the following: + +```console +$ node main.js +Ok! +$ node main.js +Error! +$ node main.js +Ok! +$ +``` + +### Notions + +- [Using promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises) +- [async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function)