![]() |
1
3
我同意@AMieres的观点,邮箱处理器是一种很好的方法。我的代码版本有点不太通用—它直接使用邮箱处理器来实现这一目的,因此可能会更简单一些。 我们的邮箱处理器只有一条消息—您要求它下载一个URL,它会返回一个异步工作流,您可以等待该工作流来获得结果:
我们需要一个helper函数来异步下载URL:
要使用缓存进行实际下载,我们只需向邮箱处理器发送一个请求,然后等待返回的工作流(可能由多个请求共享)的结果。
|
![]() |
2
3
更新
你可以用
第一个参数是错误的处理程序,第二个参数是初始状态,在本例中是
此函数需要一个文件夹函数,该函数检查缓存并添加
首先
只是一个返回字符串和计时信息的伪函数。 现在检查缓存的文件夹函数:
最后,我们的下载功能:
测试
生成以下输出:
|
![]() |
3
2
我提供一个基于@Tomas petrichek答案的简化版本。
假设我们有一个下载函数,给定一个url返回一个
这里我们有一些简单的通用
此“库”的目的是简化
第一个参数是异常处理程序,第二个参数是返回值的函数。以下是我们如何定义
我们的储藏室是
调用我们使用的管理器
从而产生:
|
![]() |
Thomas · 使类型别名在F中不可互换# 2 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 6 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 6 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 6 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 6 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 6 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 6 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 6 年前 |