When.js 是 cujojs 的轻量级的 Promises/A 和 when() 实现,从 wire.js 的异步核心和 cujojs 的 IOC 容器派生而来。包含很多其他有用的 Promiss 相关概念,例如联合多个 promiss、mapping 和减少 promises 集合以及 timed promises 等。
示例代码:
var when = require('when'); var rest = require('rest'); when.reduce(when.map(getRemoteNumberList(), times10), sum) .done(function(result) { console.log(result); }); function getRemoteNumberList() { // Get a remote array [1, 2, 3, 4, 5] return rest('http://example.com/numbers').then(JSON.parse); } function sum(x, y) { return x + y; } function times10(x) {return x * 10; }
这篇文章可以看作是屈屈同学关于when.js的文章《异步编程:When.js快速上手》的续篇。 屈屈的文章中详细介绍了when.js,在这里关于when.js的使用我就不多复述了,大家可以自己去研究它的API。 在这里,我主要想讨论的是如何实现一个when.js类似的promise/A框架。为了更清晰了解实现原理,我略过when.js中一些比较强大的功能,只实现其中最核心的功能,包括基本的then
1.如果函数a2执行依赖a1的返回值就会将a2函数的调用方法写入a1的回调函数中,如果是$ajax请求就需要卸载success中,如果依赖过多就会产生回调地狱。如下: function a1(cb){ setTimeout(cb,1000); console.log('a1 finish'); } function a2(){ console.log('a2 finish'); } a1(a2)
30 Seconds of Code is a brilliant collection of JavaScript snippets, digestible in ≤ 30 seconds. Anyone looking to master JavaScript should go through the entire thing. 30秒的代码是精妙JavaScript片段集合,可在≤30秒内
假设一个业务场景: 通过rss地址,获取rss并保存于文件,rss地址保存于文件中。 完成该场景的业务需要完成3个任务: 1.从文件中读取rss地址。 2.获取rss。 3.保存于文件。 最后将这三个任务进行整合。 准备: 存放rss地址的文件,address.txt。 http://programmer.csdn.net/rss_programmer.html 任务1: 读取rss地址文
Releases Jeremy Grelle February 14, 2013 Dear Spring Community, We are pleased to announce the release of when.js 1.8.0. When.js is cujojs’s lightweight Promises/A and when() implementation, derived f
when.js很小,压缩后只有数kb,gzip后的大小几乎可以忽略。在Node和浏览器环境里都可以使用when.js 首先,我们看一小段代码: var getData = function(callback) { $.getJSON(api, function(data){ callback(data[0]); }); } var getImg = functio
Electron14以上版本中main.js、renderer.js及preload.js关系和消息调用 最近在了解跨平台桌面编程语言,发现Electron很有意思,它将Node.js,Html和CSS整合,可以利用Html做出很好的用户界面,也解决了系统调用权限的问题。由于接触不多,难免会有理解不周的地方。 Electron框架分成三部分,第一个是主框架(相当于CEF frame),它将内嵌Ht
// 包含这个,是你的配置文件,publicPath不对 < < < 你的路径不对,导致构建之后匹配资源有问题 解决办法: 改成 “/” 或者“./”
分享:When.js 2.0.0 发布,Promises/A 的实现 When.js 2.0.0 发布,Promises/A 的实现 http://www.oschina.net/news/38786/when-js-2-0 posted on 2013-03-22 07:05 lexus 阅读( ...) 评论( ...) 编辑 收藏 转载于:https://www.cnblogs.com/l
在将来还有一些zip()满足不了的场景。如复杂的架构,或者是仅仅为了个人爱好,你可以使用And/Then/When解决方案。它们在RxJava的joins包下,使用Pattern和Plan作为中介,将发射的数据集合并到一起。 我们的loadList()函数将会被修改从这样: private void loadList(List<AppInfo> apps) { mRecyclerView
问题内容: 我想在操作完成后使用一个回调函数,我正在尝试如下操作: 问题在于,在操作完成之前会触发回调函数。 问题答案: 这是因为jQuery.when()需要jQuery.Deferred实例,而load()返回jQuery实例(请参见http://api.jquery.com/jQuery.when/和http://api.jquery.com/load/)。 您可以解决此问题:
when宏后跟一个计算为t或nil的test子句。 如果test子句被计算为nil,则不评估任何形式并返回nil,但是测试结果是t,然后执行test子句之后的操作。 宏时的语法 - (when (test-clause) (<action<sub>1</sub>) ) 例子 (Example) 创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。 (setq a 100) (wh
当使用间谍对象作为测试对象时,如果我们不想在我们正在测试的方法中调用嵌套方法,这些方法中的哪一个(doReport-time或whing-thenBack)可以用来模拟这些嵌套方法?有没有办法避免在我们将要测试的方法中调用真正的方法?
egghead.io 第9课: 自定义反应 when(debugName?, predicate: () => boolean, effect: () => void, scope?) when 观察并运行给定的 predicate,直到返回true。 一旦返回 true,给定的 effect 就会被执行,然后 autorunner(自动运行程序) 会被清理。 该函数返回一个清理器以提前取消自动运
主要内容:示例MyBatis 中动态语句 choose-when-otherwise 类似于 Java 中的 switch-case-default 语句。由于 MyBatis 并没有为 if 提供对应的 else 标签,如果想要达到<if>...<else>...</else> </if> 的效果,可以借助 <choose>、<when>、<otherwise> 来实现。 动态语句 choose-when-o
问题内容: public void push(E element) { if (size == elements.length) { resize(); // doubel of size } elements[size++] = element; } Java中的a 和 a或a–和–a有什么区别 谢谢 问题答案: 或是后缀运算符,表示a的值将在对表达式求值后更改。 或是前缀运算,表示a的值将在对
问题内容: 正如我在标题中提到的 a + = b和a = + b以及a 和 a有什么区别?我有点困惑 问题答案: 相当于 相当于 且两者都增加1。不同之处在于,返回的是增量之前的值,而返回的是增量之后的值。 那是: