Fork me on GitHub

随笔分类 -  异步编程

移动web app开发必备 - Deferred 源码分析
摘要:姊妹篇 移动web app开发必备 - 异步队列 Deferred在分析Deferred之前我觉得还是有必要把老套的设计模式给搬出来,便于理解源码!观察者模式观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一.它定义了一种一对多的关系让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。使用观察者模式的好处:支持简单的广播通信,自动通知所有已经订阅过的对象。页面载入后目标对象很容易与观察者存在一种动态关联,增加了灵活性。目标对象与观察者之间的抽象耦合关系能够单独扩展以及重用。在这种模式中,有两类对象,分别是“观察者- 阅读全文
posted @ 2013-07-04 09:32 【艾伦】 阅读(3944) 评论(3) 推荐(2) 编辑
移动web app开发必备 - 异步队列 Deferred
摘要:背景移动web app开发,异步代码是时常的事,比如有常见的异步操作:Ajax(XMLHttpRequest)Image Tag,Script Tag,iframe(原理类似)setTimeout/setIntervalCSS3 Transition/AnimationHTML5 Web DatabasepostMessageWeb WorkersWeb Socketsand more…后面几个是CSS3 HML5加入的新API.这些接口都是会产生异步的操作比如本人的一个phonegap项目,操作HTML5本地数据库(HTML5 Web Database)就是一个异步的过程,如果同时执行多个查 阅读全文
posted @ 2013-07-03 09:04 【艾伦】 阅读(3963) 评论(3) 推荐(10) 编辑
关于异步Promises
摘要:英文原文:What's The Point Of Promises?迄今为止,可能每个JavaScript开发者和他们的祖母都听说过Promises。如果你没有,那么你即将会。promises的概念是由CommonJS小组的成员在 Promises/A规范 中提出来的。Promises被逐渐用作一种管理异步操作回调的方法,但出于它们的设计,它们远比那个有用得多。事实上,由于它们的多种用法,有无数人告诉我——在我写过一些关于promises的东西后——我“遗漏了promises的重点”。那么什么是promises的重点呢?一点关于Promises的东西在我开始promise的“重点”之前 阅读全文
posted @ 2013-06-30 19:47 【艾伦】 阅读(6077) 评论(1) 推荐(2) 编辑
深入理解javascript事件
摘要:使用setInterval调度 1: var fireCount = 0; 2: var start = new Date; 3: var timer = setInterval(function() { 4: if (new Date - start > 1000) { 5: 6: clearIn... 阅读全文
posted @ 2013-06-27 12:40 【艾伦】 阅读(654) 评论(0) 推荐(2) 编辑
JavaScript中的异步梳理(3)——使用Wind.js
摘要:在之前介绍的方法中,无论是消息驱动还是Promise,都无法摆脱“回调”这个东西。习惯了命令式编程的我们似乎很难接受回调,因为它的执行顺序和代码编写顺序并不一致。而JavaScript中的回调之所以会有这么多话题值得讨论,我想一方面是因为它有一张长得像Java的脸,而同时却又有如此多的异步特性。反观像Erlang, F#那样生来就是异步的语言,似乎反而没这么多话题好讨论的。异步就要回调吗?这是个问题,习惯了JavaScript中的异步似乎这个问题的答案是肯定的,但Wind.js却扭转了这一点。在同步、阻塞的环境下,我们写下如下代码123str = readFile('...') 阅读全文
posted @ 2012-11-17 10:02 【艾伦】 阅读(3190) 评论(0) 推荐(4) 编辑
JavaScript中的异步梳理(2)——使用Promises/A
摘要:Promises是一种异步编程模型,通过一组API来规范化异步操作,这样也能够让异步操作的流程控制更加容易。这里谈的是Promises/A,算是Promises的一个分支吧,其实就是根据Promises模型定义了一组API。由于Promises对于新手而言理解曲线还是比较陡峭的,这里循序渐进的给大家介绍,同时实现一个最简单的Promises/A代码。Promises/A有个别名叫做“thenable”,就是“可以then”的。这里一个promise有三种状态:[默认、完成、失败],初始创建的时候是默认状态,状态只可以从默认变成完成,或者默认变成失败。一旦完成或者失败,状态就不能再变。为了简化文 阅读全文
posted @ 2012-11-17 10:01 【艾伦】 阅读(2228) 评论(0) 推荐(3) 编辑
JavaScript中的异步梳理(1)——使用消息驱动
摘要:先举一个例子,如果希望ABCDE这5个函数依次执行,我们可以写出如下代码。A();B();C();D();E();在同步的情况下,这样的代码没有任何问题。但如果ABCDE都是异步的,还需要按次序执行,这样写就不行了。通常我们会为异步函数设置回调,当函数执行完的时候执行回调,例如A(function(){ B(function(){ C(function(){ D(function(){ E(); }); }); });});毫无疑问这样的编程体验是很差的。当异步流复杂的时候回调嵌套... 阅读全文
posted @ 2012-11-17 10:01 【艾伦】 阅读(987) 评论(0) 推荐(3) 编辑
JavaScript中的异步梳理(0)
摘要:JavaScript中有大量异步操作,首先可以看看JS中什么东西会产生异步(这里先只考虑浏览器里的情况):Ajax(XMLHttpRequest)Image Tag,Script Tag,iframe(原理类似)setTimeout/setIntervalCSS3 Transition/AnimationpostMessageWeb WorkersWeb Socketsand more…实际上在我自己的理解中,任何“在未来不确定的时间发生”的事情都可以理解为异步,因此各种DOM事件也可以用类似的方式去理解和处理。异步是JS中的重要话题,Ajax和Node.JS出现以后更是让JS中的异步编程提升 阅读全文
posted @ 2012-11-17 09:55 【艾伦】 阅读(1255) 评论(0) 推荐(5) 编辑