nodeJs基础教程系列(5)——异步与同步
从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式
异步与同步
从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
看的懂更好,通过下面的实例也同样可以理解。
var fs = require("fs");
var data = fs.readFileSync("new.txt");
console.log(data.toString());
fuckreadFileSync
是同步方法,会阻塞直到得到结果后,才继续执行之后的语句。god
var fs = require("fs");
fs.readFile("new.txt",function callback(err,data){
console.log(data.toString());
});
console.log(“first me run”);
会发现 console.log(“first me run”)
先执行。 因为readFile
是异步函数,不会阻塞之后的语句。callback
是回调函数,等到底层读取完数据后,会调用该函数。god
bookNode.js中回调函数的规范是:
function callback(err,args0,args1 … ){}
下面我们模拟一个异步函数,和回调函数,加深理解。
function sumAsync(a,b,callback){
setTimeout(function(){
if(typeof a === "number" && typeof a === "number"){
callback(null,a+b);
}else{
callback(new Error("must number"));
}
},200)
}
sumAsync(2,3,function callback(err,rs){
console.log(rs);
})
console.log("first run !");
我们定义一个sumAsync
异步函数,运行后,会先执行 console.log("first run !");
,根据这个实例,应对异步函数、回调概念已理解。在Node.js 的实际开发中,I/O操作都应该调用异步函数,这样才能发挥更好的性能,但回调函数的嵌套很丑,为了解决这个问题,之后的几节中,会介绍 Promises 的Q库 和 ES6 generator 及 co 库,通过这几个工具即能发挥Node.js高性能,又可让代码更好维护、更可控和更好的可读性。
很赞哦! ( 0
)
相关文章
- 第10天 cookie与session— session插件分析
- 第9天response 响应渲染 —动态渲染实例
- 第9天response 响应渲染 —动态渲染插件开发
- 第9天response 响应渲染 —动态渲染插件分析
- 第9天response 响应渲染 —download插件开发
- 第9天response 响应渲染 —跳转插件开发
- 第9天response 响应渲染 —文本渲染插件开发
- 第8天 二进制文件上传—其它实现方式
- 第8天 二进制文件上传—原理解析
- 第8天 二进制文件上传—升级post.js插件
- 第8天 二进制文件上传—上传实例
- Express 4.8.x—mongoose 查询操作