首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在管道中间使用异步函数的fp-ts

在管道中间使用异步函数的fp-ts
EN

Stack Overflow用户
提问于 2019-12-30 06:15:22
回答 1查看 3.1K关注 0票数 4

我有三个函数,f1f2f3

f1f3是同步并返回Option<string>的,但是f2是一个异步函数返回Promise<Option<string>>

我应该如何在一个管道中使用这三个函数?

这是我的代码:

代码语言:javascript
复制
import {some, chain} from 'fp-ts/lib/Option';
import {pipe} from 'fp-ts/lib/pipeable';

const f1 = (input: string) => {
    return some(input + " f1")
};
const f2 = async (input: string) => {
    return some(input + " f2")
};
const f3 = (input: string) => {
    return some(input + " f3");
};

const result = pipe(
    "X",
    f1,
    chain(f2),
    chain(f3),
);

console.log("result", result);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 06:37:56

我找到了一个使用TaskOption的解决方案

这是我的代码:

代码语言:javascript
复制
import * as O from 'fp-ts/lib/Option';
import * as TO from 'fp-ts-contrib/lib/TaskOption';
import {pipe} from 'fp-ts/lib/pipeable';
import {flow} from 'fp-ts/lib/function';

const f1 = (input: string): O.Option<string> => {
    return O.some(input + " f1")
};
const f2 = (input: string): TO.TaskOption<string> => async () => {
    return O.some(input + " f2")
};
const f3 = (input: string): O.Option<string> => {
    return O.some(input + " f3");
};

pipe(
    "X",
    flow(f1, TO.fromOption),
    TO.chain(f2),
    TO.chain(flow(f3,TO.fromOption)),
)().then(console.log);

我们使用Option将所有的TaskOption转换为TO.fromOption

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59526500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档