背景
我正在使用Fluture来抽象 Futures。
假设我有一个发出 GET 请求的函数。这个函数可以成功也可以失败。
发出请求时,如果成功,则打印一条消息,如果失败,则记录错误并执行命令。
axios.get(endpoint, { timeout: timeoutMs })
.fold(
err =>
logger.errorAsync( err )
.chain( ( ) => cmd.getAsync("pm2 restart app")),
response => logger.infoAsync( "Great success!" )
);
研究
我一直在阅读 API,我发现bimap
两者fold
都将函数应用于成功和错误:
bimap:将左函数映射到拒绝值,或将右函数映射到分辨率值,具体取决于存在的情况。
fold:将左函数应用于拒绝值,或将右函数应用于分辨率值,具体取决于存在的情况,并使用结果进行解析。
问题
如果你有敏锐的眼光,你就会知道我的例子行不通。我需要使用bimap
,但我不明白为什么。
问题
- 我应该什么时候使用
bimap
,什么时候应该使用fold
? - 它们之间的主要区别是什么?