【发布时间】:2018-12-19 02:14:46
【问题描述】:
背景
我正在阅读每一寸文档,并尽可能多地了解 Folktale。
最近决定试试Future。
我们需要未来吗?
虽然我现在了解Task 和Promise 之间以及Task 和Future 之间的区别(支持取消),但我不清楚Future 和Promise 之间的区别。
我为什么要使用 Future 而不是 Promise ?我会有什么好处?
好吧,你可以说:“这样你实际上有一个 monad,而不是一个 monad 的抱歉借口”。
这本身就是一个很好的论点,但是......记住我总是需要从 Promise 转换为其他东西(到未来)并且Future 的 API 几乎相同,它是作为一个新人,我不清楚为什么我应该关心Future。
代码示例
假设我有这个函数,其中request 是一个发出请求并返回一些结果的函数。
extractRequestInfo 是一个从响应对象中提取数据的函数。
如果发生故障,我会catch 错误并返回一个包含所有数据、badId 和错误的对象。
const requestFruit = request => data =>
request( data )
.then( extractRequestInfo )
.catch( error => ( { badId: prop( [ "Id" ], data ), error } ) );
鉴于这是一个 HTTP 请求,我知道我不需要 Task,因为我无法在此处执行取消操作。所以我的选择是Promise 和Future。
问题
- 如何在此示例中使用
Future? - 既然这可能会失败,我是否也应该使用
Result?
【问题讨论】:
标签: javascript functional-programming folktale