1、传统方法
ES6诞生以前,异步编程的方法大概有下面4种:
- 回调函数
- 事件监听
- 发布/订阅
- Promise对象
Generator函数将JavaScript异步编程带入了一个全新的阶段。
2、基本概念
(1)异步和同步;
可以理解为一个任务不是连续完成的,可以理解成该任务被人氛围两段,先执行第一段,然后转而执行其他任务,等做好准备后再回过头执行第二段。
(2)回调函数
读取文件进行处理的代码:
fs.readFile('/etc/passwd','utf-8',function(err,data){
if(err)
throw err;
console.log(data);
})
readFile的第三个参数即是回调函数,等操作系统返回/etc/passwd文件以后,回调函数才会执行。
一个有趣的问题:为什么Node约定回调函数的第一个参数必须是错误对象err?原因在于,执行分为两段,第一段执行完以后,任务所在的上下文环境就已经结束了。在这以后抛出的错误,其原来的上下文环境已经无法捕捉,因此只能当作参数被传入第二段。
fs.readFile是