如何与acync函数融合?

时间:2018-08-21 01:02:52

标签: functional-programming async-await ramda.js

我有一个函数,我想通过收敛

const getProfileAndRepos = R.converge(R.merge, [
    x => getProfile(x),
    x => getRepos(x)
])

我的getProfilegetReposasync函数。 调用getProfileAndRepos('john')后,我会回来:

f.apply(...).then is not a function

更新:

我有点找到解决办法了

const getProfileAndRepos = R.converge(R.identity, [
    x => Promise.all([getProfile(x), getRepos(x)])
])

但是现在我得到[object, object],但是我想取消嵌套,所以我得到[profile: {}, repos: []]

现在这可能与主题无关...抱歉

1 个答案:

答案 0 :(得分:1)

我完成了外部功能的实现:

const getData = async player => {
    const [profile, repos] = await Promise.all([
        getProfile(player),
        getRepos(player)
    ])
    return {
        profile,
        repos
    }
}

const getProfileAndRepos = R.converge(R.identity, [x => getData(x)])