函数式javascript读取、异步、写入结果

Functional javascript read, async, write result

本文关键字:结果 异步 函数 javascript 读取      更新时间:2023-09-26

我现在正在阅读关于fp的大部分指南。但我不知道如何正确地组合这些函数。

const R = require('ramda');
const {IO, Future} = require('ramda-fantasy');
const read = () => IO(() => 'hello');
const write = (data) => IO(() => {
    console.log(data)
    return data;
});
const process = (data) => Future((reject, resolve) => {
  return setTimeout(() => resolve(data), 0);
});

组合函数的最佳方式是什么:读取->处理->写入?

将ios更改为futures。

const R = require('ramda');
const {Future} = require('ramda-fantasy');
const read = () => Future((reject, resolve) => resolve('hello'));
const write = (data) => Future((reject, resolve) => {
    console.log(data)
    resolve(data);
});
const process = (data) => Future((reject, resolve) => {
    return setTimeout(() => resolve(data), 0);
});
read.chain(process)
    .chain(write)
    .fork(console.warn, console.log);

期货就像异步ios,所以在这两种类型之间没有太大的区别。如果你真的想区别对待他们,你可以像bergi建议的那样,将monad嵌套到IO>中。