gpt4 book ai didi

javascript - 替代 Ramda 中已弃用的 pipeP

转载 作者:行者123 更新时间:2023-11-30 08:17:44 26 4
gpt4 key购买 nike

我目前使用 Ramda 的 pipeP 实现类似的实现:

const fetchAmount = () => new Promise((resolve) => setTimeout(() => resolve({value: 5}, 1000)))

const getTotal = pipeP(
fetchAmount,
prop('value'),
add(2)
)

await getTotal() //=> 7

而且我看到它已被弃用,我发现的唯一解决方案是添加 then,例如:

const fetchAmount = () => new Promise((resolve) => setTimeout(() => resolve({value: 5}, 1000)))

const getTotal = pipeP(
fetchAmount,
then(prop('value')),
then(add(2))
)

await getTotal() //=> 7

这是要走的路吗?我想弃用 pipeP 可能有重要原因,因为在将 promises 与纯函数结合使用时它真的很容易使用。

最佳答案

是的,这在 v0.26.0 中已弃用.

Ramda 添加了 pipeWithcomposeWith , 涵盖范围更广。

pipeP(f1, f2, ..., fn)可以写成pipeWith (then) ([f1, f2, ..., fn]) .

如果你想要完全相同的签名,你可以这样写:

const pipePromises = unapply (pipeWith (then))

pipePromises (
(n) => Promise .resolve (n + 1),
(n) => Promise .resolve (n * n),
(n) => Promise .resolve (n - 3)
)
(4)
.then (console .log) //~> 22
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>
<script>const {unapply, pipeWith, then} = R </script>

关于javascript - 替代 Ramda 中已弃用的 pipeP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229787/

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