Skip to content

Commit f42c3fd

Browse files
committed
javascript generators
1 parent 89040e3 commit f42c3fd

5 files changed

Lines changed: 58 additions & 0 deletions

File tree

javascript-generators/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# JavaScript Generators
2+
3+
> [https://youtu.be/Zk_rX2n3Ml8](https://youtu.be/Zk_rX2n3Ml8)
4+
5+
Install [Node.js](https://nodejs.org/).
6+
7+
Then run `node index.js` to run the example.

javascript-generators/big.file

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This file is really big.

javascript-generators/index.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// function* bears () {
2+
// var kind = yield 'grizzly'
3+
// yield kind + ' polar'
4+
// console.log('kind: ' + kind)
5+
// return 'done'
6+
// }
7+
// var bear = bears()
8+
// console.log(bear.next().value)
9+
// console.log(bear.next('ferocious').value)
10+
// console.log(bear.next().value)
11+
12+
var fs = require('fs')
13+
14+
run(function* (resume) {
15+
var contents = yield fs.readFile('big.file', 'utf8', resume)
16+
var uppercase = contents.toUpperCase()
17+
yield fs.writeFile('uppercase.file', uppercase, resume)
18+
console.log('All done!')
19+
})
20+
21+
function run (generator) {
22+
var data = null, yielded = false
23+
var iterator = generator(function () {
24+
data = arguments
25+
check()
26+
})
27+
yielded = !!(iterator.next())
28+
check()
29+
function check () {
30+
while (data && yielded) {
31+
var err = data[0], item = data[1]
32+
data = null
33+
yielded = false
34+
if (err) return iterator.throw(err)
35+
yielded = !!(iterator.next(item))
36+
}
37+
}
38+
}

javascript-generators/package.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"name": "generators-async-await",
3+
"version": "0.1.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"start": "node index.js"
8+
},
9+
"author": "Kyle Robinson Young <kyle@dontkry.com> (http://dontkry.com)",
10+
"license": "MIT"
11+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
THIS FILE IS REALLY BIG.

0 commit comments

Comments
 (0)