作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前使用 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 添加了 pipeWith
和 composeWith
, 涵盖范围更广。
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/
我是一名优秀的程序员,十分优秀!