在JavaScript编程中,异步操作一直是一个问题,回调是一种深层次的嵌套处理方式,我们也可以把嵌套处理转为直线处理以简化异步处理。有过prolog和erlang编程了解的同学可能对模式匹配有深刻的印象,我们也可以借鉴此种思想处理异步问题-条件执行。 此方案描述如下: 1.创建一个依赖状态stat ...
分类:
其他好文 时间:
2017-05-11 18:36:25
阅读次数:
211
13.6 第十三章小结本章重点演示了在 F# 中典型的探究式编程(explorative programming)的生命周期;此外,还介绍了在其他开展过程中非常重要的 F# 语言和库功能。
我们首先从网站获取数据。为此,我们使用异步工作流,在标准的 F# 库中用 F# 计算表达式实现。异步工作流能够用于高效执行 I/O 和其他非常耗时的操作,而不会阻塞调用者线程和浪费资源。下载数据以后,就可以使用...
分类:
其他好文 时间:
2015-03-22 10:40:42
阅读次数:
288
实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行。跟插件一样,不能在创建之前和删除之后执行。如果执行过程中有异常发生,会取消并回滚整个操作。实时工作流里所有的活动和子流程都是一个事务,不像异步工作流里,子流程是单独的一个事务。不能使用等待或并行等待条件步骤。如果执...
分类:
其他好文 时间:
2015-03-04 09:44:30
阅读次数:
179
在CRM 2013 里,工作流被分成二类:异步工作流和实时工作流。异步工作流依赖一个windows 服务: Microsoft Dynamics CRM Asynchronous Processing Service , 这个服务必须在CRM 服务器上运行,否则异步工作流不会运行。异步工作流有可能不...
分类:
其他好文 时间:
2015-03-02 10:52:21
阅读次数:
183
13.3.3 获取指标获取有关国家或地区的数据,需要使用世界银行服务的不同函数,函数的路径是 /countries/indicators,可以在 Data Calls 选项卡的 Query Generator(查询生成器)中找到,它能够请求指定国家特定时间段内的有关指标数据。我们不必单独下载每个感兴趣的地区数据,可以一次性地获得所有国家的信息,在内存中进行处理。以这种方式可以下载更多的数据,而请求的...
分类:
其他好文 时间:
2015-02-16 22:12:05
阅读次数:
198
13.3.2 提取地区信息的代码我们下载函数的结果是字符串,因此,需要将字符串解析为 XML 文档。由于这个操作我们将经常要用,所以,要写一个简单的打包函数,用 worldBankDownload 下载数据,以 XDocument 对象的形式返回结果。下载异步运行,因此,我们使用异步工作流实现这个函数:let worldBankRequest(props) = async {
let! text...
分类:
其他好文 时间:
2015-02-15 16:38:29
阅读次数:
204
13.3.1 实现 XML 辅助函数LINQ to XML 主要是为 C# 和 VB 而设计的,在 F# 中使用可能有些麻烦。例如,F# 不支持隐式类型转换(因为这会使类型推断变得复杂),所以,每次描述元素名时,都必须使用 XName.Get,而不能只用字符串。作为变通,可以写简单的辅助函数或自定义运算符,来完成这功工作。
我们可以很容易实现几个 F# 函数,把 LINQ to XML 最常用的部...
分类:
其他好文 时间:
2015-02-15 15:11:11
阅读次数:
204
13.3 探索并获取数据通过前面几个例子,我们已经知道,世界银行数据服务返回的数据是 XML 文档,因此,在写任何代码处理数据之前,都需要将它转换为 F# 类型。在第七章,我们在XML 和自定义的差别联合类型之间进行过转换,但在这里,我们将使用元组和序列。这是因为,这种数据结构很简单,交互式处理数据时,需要频繁地修改代码,既要调整如何使用现有的值,还要下载不同的信息。对于这种任务来说,元组更适合...
分类:
其他好文 时间:
2015-02-14 22:37:20
阅读次数:
171
13.2.2 从故障中恢复世界银行服务对每个用户密钥每天请求数量有限制,还限制了请求的频率,因此,如果我们一次运行大量的请求,有可能会出错。解决的方法是捕获异常,稍后重试请求。
清单 13.7 实现的循环,重复执行请求,直到成功,或者尝试 20 次为止。使用异常报告失败,使用 F# 的 try … with 结构捕捉异常。清单 13.7 重复运行 web 请求 (F# Interactive)>...
分类:
其他好文 时间:
2015-02-13 18:34:40
阅读次数:
140
13.2 连接到世界银行我们把异步工作流的内容放在有关探索式编程(explorative programming)这一章来讨论,绝不是偶然的。今天,我们要处理的很多重要数据源,都是以网站服务的形式,或者其他基于网站的应用程序,在线提供。我们已经知道,对于获取数据,异步工作流是 F# 的本质特征。
高效下载数据并不是我们唯一的问题。数据源返回的数据,通常是非类型化的格式...
分类:
其他好文 时间:
2015-02-11 21:58:15
阅读次数:
140