-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtask.js
38 lines (32 loc) · 955 Bytes
/
task.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const fs = require('fs')
const Task = require('data.task')
const launchMissiles = () =>
new Task((_, res) => {
console.log('Launch missiles! 🚀🚀🚀')
res('missile')
})
launchMissiles()
.map(x => x + '!')
.map(x => x + '!')
// Nothing happens until we fork the task with both paths
.fork(e => console.error('ERROR:', e), x => console.log('SUCCESS:', x))
const readFile = (filename, enc) =>
new Task((rej, res) =>
fs.readFile(
filename,
enc,
(err, contents) => (err ? rej(err) : res(contents))
)
)
const writeFile = (filename, contents) =>
new Task((rej, res) =>
fs.writeFile(
filename,
contents,
(err, success) => (err ? rej(err) : res(success))
)
)
const app = readFile('config.json', 'utf-8')
.map(contents => contents.replace(/8/g, '6'))
.chain(contents => writeFile('config1.json', contents))
app.fork(e => console.error(e), () => console.log('success!'))