- 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
- 深圳网络教育《大学英语》统辅导深圳网络教育《大学英语》统考辅导深圳网络教育《大学英语》统考辅导深圳网络教育《大学英语》统考辅导.ppt
- 深圳新版牛津英语七年级下册三单元 第一课时深圳新版牛津英语七年级下册第三单元 第一课时深圳新版牛津英语七年级下册第三单元 第一课时深圳新版牛津英语七年级下册第三单元 第一课时.doc
- 深圳·宝安中洲中央公园11b02户型样板房设计深圳·宝安中洲中央公园11-b02户型样板房设计深圳·宝安中洲中央公园11-b02户型样板房设计深圳·宝安中洲中央公园11-b02户型样板房设计.doc
- 什么才是正宗的桂林米粉?什才是正宗的桂林米粉?什么才是正宗的桂林米粉?什么才是正宗的桂林米粉?.ppt
- 什么情况下需要进行健康体检什么情况下需要进行健康体检呢什么情况下需要进行健康体检呢什么情况下需要进行健康体检呢.doc
- 什么是高频电子变压器什么是频电子变压器什么是高频电子变压器什么是高频电子变压器.doc
- 什么人适合做临床药师什么人合做临床药师什么人适合做临床药师什么人适合做临床药师.doc
- 什么是lc滤波电路什么是l滤波电路c滤波电路.doc
- 深圳大学理科选修《遗传学发》课件 6 dna密码深圳大学理科选修《遗传学发现》课件 6 dna密码深圳大学理科选修《遗传学发现》课件 6 dna密码深圳大学理科选修《遗传学发现》课件 6 dna密码.ppt
- 2025年私人银行业务高端客户财富管理服务模式创新与市场竞争力分析报告.docx
- 初中数学教师数字化教学画像构建与评价体系研究教学研究课题报告.docx
- 2025年职业技能培训数字化教学资源在职业培训行业变革中的引领作用.docx
- 直播带货私域流量运营用户行为分析报告.docx
- 小学数学单元整体教学设计在培养学生创新思维中的实践教学研究课题报告.docx
- 跨境电商独立站用户留存与竞争对手分析报告.docx
- 初中教学管理变革中的数字化环境应用与创新驱动策略教学研究课题报告.docx
- 基于走班制的初中体育教学中的学生运动损伤预防策略教学研究课题报告.docx
- 企业管理-再生铅废酸废水处理工艺流程 SOP.pdf
- 初中数学教育中,人工智能辅助下的学习分析结果可视化教学策略教学研究课题报告.docx
文档评论(0)