- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
什么是异步编程的
什么是异步编程?
异步编程是指由于异步I/O等因素,无法同步获得执行结果时,在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。
示例:
从示例中可以看到,hello是在wow输出后才输出的,因为setTimeout函数设置了延迟1000毫秒才异步执行,function(){ console.log(hello); }就是异步回调函数,这样的编程风格就是异步编程。
为什么选择node.js?它有哪些优势呢?
性能:相对于多线程,异步I/O没有了线程间的上下文切换开销,由此带来可观的性能提升是选择它的主要原因。
成本:由于性能的提升,相同的硬件可以发挥更大的作用,变相的降低了运营成本,由于node.js采用javascript作为开发语言,而javascript的使用已经非常广泛,所以降低了node.js的学习成本。
效率:node.js采用javascript作为开发语言,使前后端开发语言统一,不需要切换开发语言,使开发效率更高,加之javascript使用者众多,使得node.js迅速的流行起来。
Javascript普及度高也是node.js迅速发展的一种优势。
虽然异步会带来很多好处,但是也衍生了很多问题。 异步编程在流程控制中业务表达不太适合自然语言的线性思维习惯。
实例 - 获取数据线性表达
var data = getData(id);
异步编程:
getData(id,function(data){
//在回调函数中才能获取到data数据
});
异步I/O的实现主要有两个阶段,①提交请求;②处理结果; 这两个阶段彼此不关联,而异常并不一定发生在请求提交(即调用函数)时,平常的try/catch并不能有效的捕捉到程序的异常。
示例:
因为计算并不会马上执行,所以即便是发生了错误,也无法捕获到相关信息,那么异步编程中应该如何处理异常的呢?请看示例2:异步编程中,异常的捕获方式也有所不同。
刚刚接触node.js的朋友们都有一个共同的烦恼,在进行较复杂的业务处理时,茫茫多的callback看得人头昏眼花,写着写着自己都糊涂了,更何况普遍患有强迫症的程序猿,面对如此难看的代码,如何能忍?
异步编程中,函数嵌套是一个普遍存在的问题,也因此常常被人诟病,如何解决函数嵌套,后面的课程将专门讲解这个问题。
异步编程是学习node.js的第一步
高阶函数是异步编程的基础,那么什么是高阶函数呢?
高阶二字听起来有点高大上的感觉,其实不然,高阶函数与普通函数不同的地方是高阶函数可以把函数作为参数,或者是将函数作为返回值,请看如下示例。
示例:
示例中是一个最简单的高阶函数,如你所见,高阶函数test的返回值是一个匿名函数。
定义一个高阶函数test,test有两个参数a和b,test返回一个将a和b相加的匿名函数。
虽然有可能是第一次真正的去了解什么是高阶函数,但是其实我们在日常开发中经常会用到它,只是我们没有去留意或者说不知道它的称谓而已。
示例:数组的排序(sort)函数
将数组test按从大到小进行排序,并打印排序结果。
什么是偏函数?
假设有一个参数或变量已经预置的函数A,我们通过调用A来产生一个新的函数B,函数B就是我们说的偏函数,有点拗口?请看示例:
isType函数中预置了判断类型的方法,只指定部分参数来产生的新的定制的函数isString和isFunction就是偏函数。
参考示例,定义一个判断数组类型的偏函数isArray(注意示例中object后的空格)。
学习了偏函数,试一试编写一个简单的偏函数!
Tom想编写一个函数say,通过传入不同的name参数,say函数可以创建出不同的偏函数,偏函数接受一个名为text的参数,执行偏函数时,控制台输出格式为:name+ say +text,请帮助Tom编写say函数,通过say函数创建偏函数tomSay,并调用tomSay输出tom say hello。
课程小结
高阶函数和偏函数是异步编程的基础,熟练运用高阶函数和偏函数是非常必要的。
函数作为参数;
函数作为返回值;
一个创建函数的工厂函数;
通过指定部分参数,定制新的函数;
您可能关注的文档
- 中医-中药-古今中药的度量衡.doc
- 中医-中药古今中药兜娜量衡.doc
- 中华经典诗文诵读的.doc
- 中南大学信息科学与的工程学院计算机组成原理虚拟实验指导书.doc
- 中华民族最可爱的人的:近百年来写进自然科学教科书的中国科学家.doc
- 中国医科大学 系统降拟剖学(网上作业).doc
- 中国医科大学2012年的7月考试《生理学(本科)》在线作业 答案(能的98分 错了一个).doc
- 中国古代度量衡标准的.pdf
- 中国国花_历史选择拥碾现实借鉴_程杰.pdf
- 中国地产案名大全集的.doc
- 2023年郑州市公务员考试行测真题及参考答案详解一套.docx
- 2023年衡阳市公务员考试行测真题附答案详解(突破训练).docx
- 2023年毕节地区公务员考试行测真题及答案详解(全国通用).docx
- 2023年遂宁市公务员考试行测真题及答案详解(各地真题).docx
- 2023年郴州市公务员考试行测真题带答案详解.docx
- 2023年株洲市公务员考试行测真题精选答案详解.docx
- 2023年荆州市公务员考试行测真题及一套参考答案详解.docx
- 2023年淄博市公务员考试行测真题及答案详解(易错题).docx
- 2023年遵义市公务员考试行测真题及答案详解(最新).docx
- 2023年辽宁省公务员考试行测真题及答案详解(各地真题).docx
文档评论(0)