我有这个功能:
const getData = async player => {
const [profile, repos] = await Promise.all([
getProfile(player),
getRepos(player)
])
return {
profile,
repos
}
}
我可能不需要更改它,但我很好奇,是否有可能使用Ramda使其免费。
答案 0 :(得分:1)
我认为您已经清楚地传达了意图,并且将其重构为无点可能会使事情变得混乱。
也就是说,这是一个可能看起来像的例子:
const getProfile = player => Promise.resolve('player-' + player)
const getRepos = player => Promise.resolve('repo-' + player)
const fn = R.pipeP(
R.pipe(R.juxt([getProfile, getRepos]), Promise.all.bind(Promise)),
R.zipObj(['profile', 'repos'])
)
fn('foo').then(console.log)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
这利用R.juxt
创建一个函数,该函数将其参数传递给所提供的Promise产生函数数组中的每个函数,并R.pipeP
与所得的Promise组成R.zipObj
。