2016.5.10
2016-05-10 18:02
323 查看
1.async_demo完成
(
Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.js设计,同时也可以直接在浏览器中使用。
Async提供了大约20个函数,包括常用的 map, reduce, filter, forEach 等,异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。
)
基本上看懂了,也知道该怎么使用了。不过看完就忘光了。。。只能用的时候再看demo
2.async await
源自于c#。es7里面可能会有。
3.promise
嵌套关系 转变为便于阅读和理解的 链式步骤关系 。
Promise的主要用法就是将各个异步操作封装成好多Promise,而一个Promise只处理一个异步逻辑。最后将各个Promise用链式调用写法串联,在这样处理下,如果异步逻辑之间前后关系很重的话,你也不需要层层嵌套,只需要把每个异步逻辑封装成Promise链式调用就可以了。
返回一个新Promise之后再调用的then就是新Promise中的逻辑了。
返回一个值会传递到下一个then的resolve方法参数中。
4.lesson6
学习使用测试框架 mocha : http://mochajs.org/
学习使用断言库 should : https://github.com/tj/should.js
学习使用测试率覆盖工具 istanbul : https://github.com/gotwarlost/istanbul 简单 Makefile 的编写 : http://blog.csdn.net/haoel/article/details/2886
mocha与istanbul联合测试,测试覆盖率全面测试。should 是断言库,expect也是断言库,但是比较复杂。
这就是传说中的测试驱动开发。
(
Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.js设计,同时也可以直接在浏览器中使用。
Async提供了大约20个函数,包括常用的 map, reduce, filter, forEach 等,异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。
)
基本上看懂了,也知道该怎么使用了。不过看完就忘光了。。。只能用的时候再看demo
2.async await
源自于c#。es7里面可能会有。
async function showStuff () { var data = await loadData() // loadData 返回一个 Promise console.log(data) // data 已经加载完毕 } async function () { await showStuff() // async 函数默认返回一个 Promise, 所以可以 await 另一个 async 函数 // 这里 showStuff 已经执行完毕 } 作者:尤雨溪 链接:https://www.zhihu.com/question/25413141/answer/30767780 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.promise
说了这么多,到底什么是Promise呢?
其实,Promise就是一个类,而且这个类已经成为了ES6的标准,这个类目前在chrome32、Opera19、Firefox29以上的版本都已经支持了,要想在所有浏览器上都用上的话就看看es6-promise吧。那Promise怎么用呢?
看一段很简单的代码,请注意阅读代码中的注释。var promise = new Promise(function(resolve, reject) { // do a thing, possibly async, then… if (/* everything turned out fine */) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });
var val = 1; // 我们假设step1, step2, step3都是ajax调用后端或者是 // 在Node.js上查询数据库的异步操作 // 每个步骤都有对应的失败和成功处理回调 // 需求是这样,step1、step2、step3必须按顺序执行 function step1(resolve, reject) { console.log('步骤一:执行'); if (val >= 1) { resolve('Hello I am No.1'); } else if (val === 0) { reject(val); } } function step2(resolve, reject) { console.log('步骤二:执行'); if (val === 1) { resolve('Hello I am No.2'); } else if (val === 0) { reject(val); } } function step3(resolve, reject) { console.log('步骤三:执行'); if (val === 1) { resolve('Hello I am No.3'); } else if (val === 0) { reject(val); } } new Promise(step1).then(function(val){ console.info(val); return new Promise(step2); }).then(function(val){ console.info(val); return new Promise(step3); }).then(function(val){ console.info(val); return val; }).then(function(val){ console.info(val); return val; }); // 执行之后将会打印 步骤一:执行 Hello I am No.1 步骤二:执行 Hello I am No.2 步骤三:执行 Hello I am No.3 Hello I am No.3
Promise到底解决什么问题?
正如上面代码所示,笔者认为,Promise的意义就在于 then 链式调用 ,它避免了异步函数之间的层层嵌套,将原来异步函数的嵌套关系 转变为便于阅读和理解的 链式步骤关系 。
Promise的主要用法就是将各个异步操作封装成好多Promise,而一个Promise只处理一个异步逻辑。最后将各个Promise用链式调用写法串联,在这样处理下,如果异步逻辑之间前后关系很重的话,你也不需要层层嵌套,只需要把每个异步逻辑封装成Promise链式调用就可以了。
Promise常用的关键点
在Promise定义时,函数已经执行了
Promise构造函数只接受一个参数,即带有异步逻辑的函数。这个函数在new Promise时已经执行了。只不过在没有调用
then之前不会 resolve 或 reject。
在then中的resolve方法中如何return?
在then方法中通常传递两个参数,一个resolve函数,一个
reject函数。
reject暂时不讨论,就是出错的时候运行的函数罢了。
resolve函数必须返回一个值才能把链式调用进行下去,而且这个值返回什么是有很大讲究的。
resolve返回一个新 Promise
返回一个新Promise之后再调用的then就是新Promise中的逻辑了。
resolve返回一个值
返回一个值会传递到下一个then的resolve方法参数中。
4.lesson6
学习使用测试框架 mocha : http://mochajs.org/
学习使用断言库 should : https://github.com/tj/should.js
学习使用测试率覆盖工具 istanbul : https://github.com/gotwarlost/istanbul 简单 Makefile 的编写 : http://blog.csdn.net/haoel/article/details/2886
mocha与istanbul联合测试,测试覆盖率全面测试。should 是断言库,expect也是断言库,但是比较复杂。
这就是传说中的测试驱动开发。
相关文章推荐
- 微信公众号开发--会员免登录操作
- XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子
- docker学习笔记(三): 简单的容器操作
- Qt5.5.1 以当前时间作为文件名保存文件
- docx转为html时给关键字标色
- iOS-OC-把JSON字符串转化为字典
- iOS HTTP请求
- poj 1298 史上最难的问题 -- 凯撒密码
- 红黑树RB_tree
- java的关闭钩子(Shutdown Hook)
- PHP 的 preg_match 和 preg_match_all
- sed给行前面加入‘#’号
- 解决Android SDK Manager不能连接网络
- 高级CSS filters
- 【数据库设计—接触真实的的你】
- Android studio 百度地图开发(8)地图已标记POI点和搜索POI点的获取和利用
- C# 中DataTable转成模型List
- PHP性能优化
- WWW万维网和HTML的故事
- shell脚本加密工具