我现在正在阅读大部分关于 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);
Futures 就像 async ios,所以这两种类型之间的提升没有太大意义。如果你真的想以不同的方式对待它们,你可以将 monad 嵌套到 IO> 中,正如 bergi 所建议的那样。
关于javascript - 函数式 javascript 读取、异步、写入结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218372/