util.promisify
but for Tasks ! ๐
yarn add util.taskify
or
npm install util.taskify
taskify
the Task data type of your choice.
I suggest you to try Fluture
or Taskorama
.
For a single function :
const taskify = require('util.taskify')
const fs = require('fs')
const Task = require('taskorama')
// or
// const Task = require('fluture')
const readFileTask = taskify(Task, fs.readFile)
readFileTask('package.json', 'utf8')
.fork(
err => console.error('Failed.', err),
str => console.log('Done!', str)
)
Or for a whole module :
const taskify = require('util.taskify')
const fs = require('fs')
const Task = require('taskorama')
// or
// const Task = require('fluture')
const Filesystem = taskify(Task, fs)
Filesystem.readFile('package.json', 'utf8')
.fork(
err => console.error('Failed.', err),
str => console.log('Done!', str)
)
If you like currying (using ramda curry()
function) :
const { curry } = require('ramda')
const util_taskify = require('util.taskify')
const fs = require('fs')
const Task = require('taskorama')
// or
// const Task = require('fluture')
//
const taskify = curry(util_taskify)
const taskifier = taskify(Task)
const readFileTask = taskifier(fs.readFile)
readFileTask('package.json')
.fork(
err => console.error('Failed.', err),
str => console.log('Done!', str)
)