From 4da65b558643e8cefe37ffdaf6800410636037f3 Mon Sep 17 00:00:00 2001 From: tzvi Date: Thu, 16 Nov 2017 17:26:45 -0500 Subject: [PATCH 1/3] now doing the event emitter. the rest works --- badthing.js | 20 +++++++++++++++++ callingFS.js | 24 ++++++++++++++++++++ index.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++ message.txt | 1 + modules/emitter.js | 0 modules/fsp.js | 48 ++++++++++++++++++++++++++++++++++++++++ numbers.js | 18 +++++++++++++++ text.txt | 1 + 8 files changed, 167 insertions(+) create mode 100644 badthing.js create mode 100644 callingFS.js create mode 100644 index.js create mode 100644 message.txt create mode 100644 modules/emitter.js create mode 100644 modules/fsp.js create mode 100644 numbers.js create mode 100644 text.txt diff --git a/badthing.js b/badthing.js new file mode 100644 index 0000000..8989ed5 --- /dev/null +++ b/badthing.js @@ -0,0 +1,20 @@ +function doBadThing(forRealz){ + return new Promise(function(resolve, reject){ + if(!forRealz){ + resolve("Yay!") + } else { + reject("truthy") + } + }) +} + +doBadThing(true).then(function(result){ + console.log(result) +}) + + +doBadThing(true).then(function(result){ + console.log(result) +}).catch(function(err){ + console.log(err) +}) \ No newline at end of file diff --git a/callingFS.js b/callingFS.js new file mode 100644 index 0000000..6cbc2e7 --- /dev/null +++ b/callingFS.js @@ -0,0 +1,24 @@ +var fsp = require('./modules/fsp.js') + + +fsp.readFile('text.txt', 'utf-8').then(function(data) { + console.log(data); + }) + .catch(function(err) { + console.error(err); + }); + + fsp.writeFile('message.txt', "hello", 'utf-8').then(function(data) { + console.log(data); + }) + .catch(function(err) { + console.error(err); + }); + + fsp.appendFile('text.txt', 'Hello again! I am editing gibberish', 'utf-8') + .then(function(res) { + console.log(res); + }) + .catch(function(err) { + console.error(err); + }); \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..c1d9cd2 --- /dev/null +++ b/index.js @@ -0,0 +1,55 @@ + +let myFunc = function( result ) { + console.log( result ); +} +let count = 1000 +let prom = new Promise( function( resolve, reject ){ + setTimeout(function(){ + resolve( "Hello Promise!" ) + }, 1000); +}); + +prom.then(myFunc) + +function delay(milliseconds){ + return new Promise( function(resolve, reject){ + setTimeout(function(){ + resolve( milliseconds ) + }, 1000); + }) +} +function countdown(){ + return delay(count).then(function(){ + if(count >= 100){ + console.log(count) + count -=100 + } else{ + console.log("Done!") + } + + }) +} + + + +delay( 1000 ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + .then( countdown ) + + +/* + (function(){ + console.log( "done" ); + console.log( "now What" ); + })(); +*/ + diff --git a/message.txt b/message.txt new file mode 100644 index 0000000..b6fc4c6 --- /dev/null +++ b/message.txt @@ -0,0 +1 @@ +hello \ No newline at end of file diff --git a/modules/emitter.js b/modules/emitter.js new file mode 100644 index 0000000..e69de29 diff --git a/modules/fsp.js b/modules/fsp.js new file mode 100644 index 0000000..ada603e --- /dev/null +++ b/modules/fsp.js @@ -0,0 +1,48 @@ +var fs = require("fs"); + + let fsp = { + readFile: function(path, encoding) { + return new Promise(function(resolve, reject){ + fs.readFile( path, encoding, function(err, data){ + if(err) {throw (err)} else{resolve( data )} + }) + }) + }, + writeFile: function(path, message, encoding) { + return new Promise(function(resolve, reject){ + fs.writeFile( path, message, encoding, function(err, data){ + if(err) {throw (err)} + resolve(data) + }) + }) + }, + appendFile: function(path, message, encoding) { + return new Promise(function(resolve, reject){ + fs.appendFile( path, message, encoding, function(err, data){ + if(err) {throw (err)} + resolve(data) + }) + }) + } + } + + + + + + + + /* +let path = "./text.txt"; + +fs.readFile(path, "utf-8", function(err, data){ + console.log(data); +}); + +let hello = console.log("hello world!"); +hello; +let goodbye = 3; + +*/ + +module.exports = fsp diff --git a/numbers.js b/numbers.js new file mode 100644 index 0000000..bb9d720 --- /dev/null +++ b/numbers.js @@ -0,0 +1,18 @@ +let numbers = function(number){ + return new Promise(function(resolve, reject){ + if(typeof number !== "number"){ + reject("not a number") + } else { + resolve(number * number) + } + }) +} +let numArray = [2,56,67,8,90,88] + +let mapped = numArray.map(numbers) + +Promise.all(mapped).then(function(results){ + console.log(results) +}) + +numbers(3) \ No newline at end of file diff --git a/text.txt b/text.txt new file mode 100644 index 0000000..28524bd --- /dev/null +++ b/text.txt @@ -0,0 +1 @@ +hellelkrmvqlrvqekl;rbmvqel;tb mqetbl;mqelt;bHello again! I am editing gibberishHello again! I am editing gibberishHello again! I am editing gibberishHello again! I am editing gibberish \ No newline at end of file From a54012f1d667d83af960566669acd5c53e915604 Mon Sep 17 00:00:00 2001 From: tzvi Date: Thu, 16 Nov 2017 21:02:54 -0500 Subject: [PATCH 2/3] working --- badthing.js | 1 - emitterchild.js | 10 +++++++++ index.js | 3 +-- modules/emitter.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ untitled | 0 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 emitterchild.js create mode 100644 untitled diff --git a/badthing.js b/badthing.js index 8989ed5..3b2b79f 100644 --- a/badthing.js +++ b/badthing.js @@ -12,7 +12,6 @@ doBadThing(true).then(function(result){ console.log(result) }) - doBadThing(true).then(function(result){ console.log(result) }).catch(function(err){ diff --git a/emitterchild.js b/emitterchild.js new file mode 100644 index 0000000..3257ff7 --- /dev/null +++ b/emitterchild.js @@ -0,0 +1,10 @@ +//var myFuncs = require('./modules/emitter.js') +var Emitter = require('events'); + +var myEmitter = new Emitter() +myEmitter.on("write", function(){ console.log("write") }) +myEmitter.on("write", function(){ console.log("read") }) +myEmitter.on("write", function(){ console.log("hello") }) +myEmitter.emit("write") +myEmitter.removeListener("write", function(){ console.log("hello") }) +//myEmitter.removeAllListeners("write") diff --git a/index.js b/index.js index c1d9cd2..446a1fb 100644 --- a/index.js +++ b/index.js @@ -18,6 +18,7 @@ function delay(milliseconds){ }, 1000); }) } + function countdown(){ return delay(count).then(function(){ if(count >= 100){ @@ -30,8 +31,6 @@ function countdown(){ }) } - - delay( 1000 ) .then( countdown ) .then( countdown ) diff --git a/modules/emitter.js b/modules/emitter.js index e69de29..11f997c 100644 --- a/modules/emitter.js +++ b/modules/emitter.js @@ -0,0 +1,52 @@ +/* +Attach an event listener with emitter.on(eventType, callback) +Attach subsequent listeners with emitter.on +Emit an event with emitter.emit(eventType) +This should result in all listeners attached to that event being invoked +Remove a listener with emitter.removeListener(eventType, callback) +Remove all listeners on an event with emitter.removeAllListeners(eventType) +*/ +let myFuncs = { + Emitter: function(){ + + this.storage = {}, + this.on = function(eventType, callback){ + + if(!this.storage[eventType]) {this.storage[eventType] = []} + this.storage[eventType].push(callback) + //console.log(this.storage) + return this + }, + + this.emit = function(eventType){ + this.storage[eventType].forEach(function(item){ + item() + }) + //console.log(this.storage) + return this + }, + + this.removeListener = function(eventType, callback){ + this.storage[eventType].forEach(function(item, index){ + if(item === callback){ + //this.storage[eventType].splice(index, 1) + } + }) + //console.log(this.storage) + return this + }, + + this.removeAllListeners = function(eventType){ + this.storage[eventType].forEach(function(item, index){ + this.storage[eventType].splice(0, this.storage[eventType].length - 1) + }) + console.log(this.storage) + return this + } + return this + } +} + + + +module.exports = myFuncs diff --git a/untitled b/untitled new file mode 100644 index 0000000..e69de29 From 68b488e0b381c9e856c3aeb4cf6b04a3d1a84951 Mon Sep 17 00:00:00 2001 From: tzvi Date: Thu, 16 Nov 2017 21:06:10 -0500 Subject: [PATCH 3/3] done --- emitterchild.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emitterchild.js b/emitterchild.js index 3257ff7..b97ecd2 100644 --- a/emitterchild.js +++ b/emitterchild.js @@ -1,7 +1,7 @@ -//var myFuncs = require('./modules/emitter.js') -var Emitter = require('events'); +var emitter = require('./modules/emitter.js') +//var Emitter = require('events'); -var myEmitter = new Emitter() +var myEmitter = new emitter.Emitter() myEmitter.on("write", function(){ console.log("write") }) myEmitter.on("write", function(){ console.log("read") }) myEmitter.on("write", function(){ console.log("hello") })