美文网首页
Task 异步执行

Task 异步执行

作者: 湘兰沅芷 | 来源:发表于2021-09-22 13:03 被阅读0次

    异步任务的实现过于复杂,我们使用folktale中的Task来演示
    folktale 一个标准的函数式编程库
    和lodash、ramda不同的是,他没有提供很多功能函数
    只提供了一些函数式处理的操作,例如:compose、curry等,一些函子 Task、Either、MayBe等

    了解folktale

    const { compose, curry } = require('folktale/core/lambda')
    let f = curry(2, (x, y) => {
      return x + y
    })
    console.log(f(4, 5))
    console.log(f(1)(2))
    const { toUpper, first } = require('lodash/fp')
    let fc = compose(toUpper, first)
    console.log(fc(['one', 'two']))
    

    Task函子

    const { task } = require('folktale/concurrency/task')
    const fs = require('fs')
    const { split, find } = require('lodash/fp')
    function readFile(filename) {
      return task(resolver => {
        // 错误优先
        fs.readFile(filename, 'utf-8', (err, data) => {
          if (err) resolver.reject(err)
          resolver.resolve(data)
        })
      })
    }
    
    readFile('package.json')
      .map(split('\n'))
      .map(find(x => x.includes('version')))
      .run()
      .listen({
        onRejected: err => {
          console.log(err)
        },
        onResolved: value => {
          console.log(value)
        }
      })
    

    相关文章

      网友评论

          本文标题:Task 异步执行

          本文链接:https://www.haomeiwen.com/subject/ydgwiltx.html