- 1、本文档共6页,可阅读全部内容。
- 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 请求等等。
示例:
console.log(hi!);
setTimeout(function(){
console.log(hello!);
},1000);
console.log(wow!);
从示例中可以看到, hello 是在 wow 输出后才输出的,因为 setTimeout 函数设置
了延迟 1000 毫秒才异步执行, function(){ console.log(hello); } 就是异步回调函数,
这样的编程风格就是异步编程。
优势
为什么选择 node.js?它有哪些优势呢?
1. 性能:相对于多线程,异步 I/O 没有了线程间的上下文切换开销,由此带
来可观的性能提升是选择它的主要原因。
2. 成本: 由于性能的提升, 相同的硬件可以发挥更大的作用, 变相的降低了
运营成本, 由于 node.js采用 javascript 作为开发语言, 而 javascript 的使用
已经非常广泛,所以降低了 node.js 的学习成本。
3. 效率: node.js采用 javascript 作为开发语言,使前后端开发语言统一,不
需要切换开发语言,使开发效率更高,加之 javascript 使用者众多,使得
node.js迅速的流行起来。
Javascript 普及度高也是 node.js 迅速发展的一种优势。
不符合线性思维习惯
虽然异步会带来很多好处,但是也衍生了很多问题。 异步编程在流程控制
中业务表达不太适合自然语言的线性思维习惯。
实例 - 获取数据
线性表达
var data = getData(id);
异步编程 :
getData(id,function(data){
// 在回调函数中才能获取到 data 数据
});
异常捕获
异步 I/O 的实现主要有两个阶段,① 提交请求;② 处理结果; 这两个阶段彼
此不关联,而异常并不一定发生在请求提交(即调用函数)时,平常的 try/catch
并不能有效的捕捉到程序的异常。
示例:
try{
setTimeout(function(){
var data = a/1; // 错误的计算
},1000);
}catch (e){
console.log(e);
}
因为计算并不会马上执行, 所以即便是发生了错误, 也无法捕获到相关信息, 那
么异步编程中应该如何处理异常的呢?请看示例 2 :
setTimeout(function(){
try{
var data = a/1; // 错误的计算
}catch(e){
console.log(e);
}
},1000);
异步编程中,异常的捕获方式也有所不同。
函数嵌套
刚刚接触 node.js 的朋友们都有一个共同的烦恼,在进行较复杂的业务处理
时,茫茫多的 callback 看得人头昏眼花,写着写着自己都糊涂了,更何况普遍患
有强迫症的程序猿,面对如此难看的代码,如何能忍?
test1(function(v1){
test2(funciton(v1,function(v2){
test3(function(v2,fcuntion(v3){
test4(v3,function(v4){
callback(v4);
});
}));
}));
});
异步编程中, 函数嵌套是一个普遍存在的问
文档评论(0)