gpt4 book ai didi

javascript - 使用 Fluture 进行面向铁路的编程

转载 作者:行者123 更新时间:2023-11-29 22:45:36 32 4
gpt4 key购买 nike

这里解释了面向铁路编程(ROP):

https://fsharpforfunandprofit.com/rop/

有什么方法可以将此模式与 Fluture 一起使用

我可以像这样使用这两个辅助方法来执行 ROP:

const bind = f => x => Future.attempt(() => f(x));
const bindAsync = f => x => Future.tryP(() => f(x));

Future.of("TEST")
.chain(bind(doThis))
.chain(bind(doThat))
.chain(bindAsync(doThisAsync))
.chain(bindAsync(doThatAsync))
.chain(bind(doAnotherThing))
.chain(bindAsync(doAnotherThingAsync))
.
.
.

是否有更好的方法来删除 bindbindAsync 并自动进行绑定(bind)?

最佳答案

我不建议像这样构建您的程序。看起来您的函数会抛出异常并使用 promise (这是您希望通过使用 ROP 摆脱的两件事)分布在整个程序中,然后在顶层组合它们。

相反,您应该包装您正在使用的库,以便摆脱 promise /异常并将它们转换为尽可能接近问题库的 future 。例如。如果您使用 promises 进行 HTTP 网络调用,请包装您的网络库,以便它返回 futures。

这意味着您可以将组合函数更改为对纯函数和 Future 返回函数进行操作,这些函数可以直接使用 mapchain 组合。

关于javascript - 使用 Fluture 进行面向铁路的编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58768361/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com