From 52237a3b1a5fbd7764fd66adb01ed9cf820ab56c Mon Sep 17 00:00:00 2001 From: JFarenci <31667933+JFarenci@users.noreply.github.com> Date: Mon, 5 Mar 2018 13:23:44 -0600 Subject: [PATCH 1/2] Add files via upload --- index.js | 1 + lib/eventEmitter.js | 14 +++++++ lib/fileOperations.js | 29 +++++++++++++ lib/promises.js | 98 +++++++++++++++++++++++++++++++++++++++++++ modules/fsp.js | 35 ++++++++++++++++ package-lock.json | 13 ++++++ package.json | 14 +++++++ 7 files changed, 204 insertions(+) create mode 100644 index.js create mode 100644 lib/eventEmitter.js create mode 100644 lib/fileOperations.js create mode 100644 lib/promises.js create mode 100644 modules/fsp.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/index.js b/index.js new file mode 100644 index 0000000..644dd90 --- /dev/null +++ b/index.js @@ -0,0 +1 @@ +//Copy any of the lib files into here to run. diff --git a/lib/eventEmitter.js b/lib/eventEmitter.js new file mode 100644 index 0000000..b07baf8 --- /dev/null +++ b/lib/eventEmitter.js @@ -0,0 +1,14 @@ +var Emitter = require('events'); +var emitter = new Emitter(); + +function gotcha() { + console.log('Gotcha!'); +} + +emitter.on('emit', gotcha); + +emitter.emit('emit'); + +emitter.removeListener('emit', gotcha); + +emitter.emit('emit'); diff --git a/lib/fileOperations.js b/lib/fileOperations.js new file mode 100644 index 0000000..71c1e18 --- /dev/null +++ b/lib/fileOperations.js @@ -0,0 +1,29 @@ +var fsp = require('./modules/fsp'); + +fsp.writeFile('./data/test.txt', 'Hello!') + .then(function(res) { + console.log(res); + }) + .catch(function(err) { + console.error(err); + }); + +fsp.appendFile('./data/test.txt', ', Hello again!') + .then(function(res) { + console.log(res); + }) + .catch(function(err) { + console.error(err); + }); + +setTimeout(function() { + fsp.readFile('./data/test.txt') + .then(function(data) { + console.log(data); + }) + .catch(function(err) { + console.error(err); + }); +}, 100); + +console.log('Performing Operations...'); diff --git a/lib/promises.js b/lib/promises.js new file mode 100644 index 0000000..6247f78 --- /dev/null +++ b/lib/promises.js @@ -0,0 +1,98 @@ +console.log('Starting up!'); + +//-----------------------------------------------------------------------------> +//Do Bad Things +function doBadThing(forRealz) { + var doBadThing = new Promise(function(resolve, reject) { + if (forRealz) { + reject('error?'); + } else { + resolve('Yay!'); + } + }); + return doBadThing; +} + +//-----------------------------------------------------------------------------> +//Squareing Map +function square(num) { + var square = new Promise(function(resolve, reject) { + if (Number.isInteger(num)) { + resolve(num * num); + } else { + reject('NaN error'); + } + }); + return square; +} + +var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]; +nums = nums.map(function(i) { + return square(i); +}); + +//-----------------------------------------------------------------------------> +//Countdown to Hello + var hello = Promise.resolve('Hello Promise!'); + + function delay(milliseconds, interval) { + var timer = new Promise(function(resolve, reject) { + resolve(milliseconds); + }) + .then(function(result) { + countDown(result, interval); + }); + } + + function countDown(ms, int) { + console.log(ms); + var ticker = setInterval(function(){ + if (ms <= (0 + int)) { + console.log('Done!') + clearInterval(ticker); + } else { + ms -= int; + console.log(ms); + } + }, int); + } + +//-----------------------------------------------------------------------------> +//Execution +hello.then(function(message){ + setTimeout(function(){ + console.log(message); + }, 1000); +}) + .then(function(result) { + doBadThing(true) + .then(function(result) { + console.log(result); + }) + .catch(function(err) { + console.log(err); + }); + }) + .then(function(result) { + doBadThing(NaN) + .then(function(result) { + console.log(result); + }) + .catch(function(err) { + console.log(err); + }); + }) + .then(function(result) { + Promise.all(nums) + .then(function(result) { + console.log(result); + }) + .catch(function(err) { + console.log(err); + }); + }) + .then(function(result){ + delay(1000, 100); + }); + + console.log('Waiting...'); diff --git a/modules/fsp.js b/modules/fsp.js new file mode 100644 index 0000000..1370dc2 --- /dev/null +++ b/modules/fsp.js @@ -0,0 +1,35 @@ +var fs = require('fs'); + +var fsp = { + readFile: function(path) { + var readF = new Promise(function(resolve, reject) { + fs.readFile(path, 'utf8', function(err, data) { + err ? reject('an error has occured') + : resolve(data+'\nread from '+path); + }); + }); + return readF; + }, + + writeFile: function(path, write) { + var writeF = new Promise(function(resolve, reject) { + fs.writeFile(path, write, function(err, data) { + err ? reject('an error has occured') + : resolve(write+' wrote to '+path); + }); + }); + return writeF; + }, + + appendFile: function(path, write) { + var appendF = new Promise(function(resolve, reject) { + fs.appendFile(path, write, function(err, data) { + err ? reject('an error has occured') + : resolve(write+' appended to '+path); + }); + }); + return appendF; + } +}; + +module.exports = fsp; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2190378 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "2_building_with_asynch_node", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..27c812e --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "2_building_with_asynch_node", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.5" + } +} From c463b05a2a15c8cb07e332c339bdc64714868ff3 Mon Sep 17 00:00:00 2001 From: JFarenci <31667933+JFarenci@users.noreply.github.com> Date: Mon, 5 Mar 2018 13:24:15 -0600 Subject: [PATCH 2/2] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c32c34d..cd23370 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # assignment_async_nodejs -Async Node.js sprint + +Jacob Farenci