作者:寸志链接:https://zhuanlan.zhihu.com/p/19622332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 早上,老爸说:“儿子,天气如何?” 每周一早上,老爸问儿子下午的天气情况,儿子可以到自家房子旁边小山上使用望远镜来观看.儿子在出发时许诺(Promise)老爸(会通知老爸天气情况). 此刻,老爸决定,如果天气不错,明天就出去捕鱼,否则就不去.而且如果儿子无法获得天气预报的话,也不去捕鱼. 30分钟左右,儿子回来了,每周的结局都不…
以下内容摘自http://www.ngnice.com/posts/126ee9cf6ddb68 promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多.promise全称是 Futures and promises.具体的可以参见 http://en.wikipedia.org/wiki/Futures_and_promises . 而在javascript世界中,一个广泛流行的库叫做Q 地址是https://github.com/kriskowa…
promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多.promise全称是 Futures and promises.具体的可以参见 http://en.wikipedia.org/wiki/Futures_and_promises . 而在javascript世界中,一个广泛流行的库叫做Q 地址是https://github.com/kriskowal/q 而angular中的$q就是从它引入的.promise解决的是异步编程的问题,对于生活在同…
jquery和angular都有defer服务,我暂以angular为例谈谈我的理解,最后并附上jquery的阮一峰总结的defer. 以我目前项目的部分代码为例说明为什么要用deferred. function getBase64(img){//传入图片路径,返回base64 function getBase64Image(img,width,height) { var canvas = document.createElement("canvas"); canvas.width =…
在ES6语法中,新出了promise构造函数, 可用来生成promise实例. Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作).有了promise对象, 可以将异步操作以同步的流程表达出来, 避免了层层嵌套的回调函数(俗称'回调地狱'). 在Angularjs中,对象deferred 实例也可以暴露派生的Promise 实例.以下将对此作简单描述: 1. $q: $q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(…
用于理解$q服务 参考:http://www.zouyesheng.com/angular.html#toc39 广义回调管理 和其它框架一样, ng 提供了广义的异步回调管理的机制. $http 服务是在其之上封装出来的.这个机制就是 ng 的 $q 服务. 不过 ng 的这套机制总的来说实现得比较简单,按官方的说法,够用了. 使用的方法,基本上是: 通过 $q 服务得到一个 deferred 实例 通过 deferred 实例的 promise 属性得到一个 promise 对象 promi…
$q的一共有四个api: 1.$q.when(value, successFn, errorFn, progressFn),返回值为一个promise对象 --value可以是一个任意数据,也可以是一个promise对象: 如果是任意数据的情况,则直接调用successFn的函数,所以后两个参数没有写的意义. var a=$q.when("something",function(data){ console.log(data) //something return data; }) a…
函数编程中functor和monad的形象解释 函数编程中Functor函子与Monad是比较难理解的概念,本文使用了形象的图片方式解释了这两个概念,容易理解与学习,分别使用Haskell和Swift两种语言为案例. 虽然Swift并不是一个函数式语言,但是我们可以用更多点代码来完成与Haskell同样的结果.Swift的代码见on GitHub. 这里是一个简单的值: 如果我们应用一个函数(+3)到这个值: 非常简答,是不是?现在我们拓展一下,上面的值我们没有设定上下文场景,如果我们假设一个值…
Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Angular做一个小应用的时候,遇到一个问题, 我将我的AJax请求放在了自己定义的factory中,并在factory编写回调函数,返回处理后的对象,然后将这个factory注入到controller中,然后我在controller中就开始对这个对象进行操作,进行一些和View上的数据绑定. 当我这样…
我们在上一期中讲 $rootscope时,看到$rootscope是依赖$prase,其实不止是$rootscope,翻看angular的源码随便翻翻就可以发现很多地方是依赖于$parse的.而$parse的源码打开一看,它的代码量有接近两千行.翻开angular的api文档,官方只给出了简短的解释"Converts Angular expression into a function(将一个angular的表达式转化为一个函数)",心中神兽奔腾----就这么点功能为什么要"…