【发布时间】:2020-06-06 05:50:07
【问题描述】:
我有一个案例,我有一个可以很好地组合在一起的管道,但是在一个实例中,我需要对我无法控制的 API 发起异步调用。我不一定关心结果,只关心它是否成功,然后想继续将 arg 传递给该调用(而不是返回值)。所以我的管道看起来像这样:
const extractUserIdFromResponse = R.andThen( R.prop( user_id ) );
const callExternalApi = tryCatch(
doApiCall,
handleAPIFailure
);
const pipeline = R.pipe(
getRecordFromDatabase,
extractUserIdFromResponse,
callExternalApi,
doSomethingElseWithUserId
);
基本上,我希望doSomethingElseWithUserId 函数显然接受userId 作为arg,而不是从callExternalApi 返回的结果。我对此有点陌生,所以我不确定我是否在正确的轨道上。
提前感谢您的帮助!
【问题讨论】:
-
你可能想看看
R.tap,它被设计为运行一个函数来处理它的副作用,但返回它收到的输入值。听起来这就是你所需要的。 (因此,您可以在管道中将callExternalApi替换为tap(callExternalApi)。)但如果您正在处理异步调用,则可能需要将pipe替换为pipeWith(andThen)。 -
是的,这正是我所需要的。谢谢!
标签: javascript functional-programming ramda.js