什么是异步编程的.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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。 课程小结 高阶函数和偏函数是异步编程的基础,熟练运用高阶函数和偏函数是非常必要的。 函数作为参数; 函数作为返回值; 一个创建函数的工厂函数; 通过指定部分参数,定制新的函数;

文档评论(0)

ayangjiayu4 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档