- js的
同步操作
并不是所有的任务一起操作之意。 - js的
异步操作
并不是一个任务执行完另一个任务开始执行。
同步:单线程
,就是同一时间只做一件事情。同步操作都会放在主线程
中进行。
setTimeout(function(){
console.log(2);
},0)
console.log(3)
//1,3,2
复制代码
- 第一句是个
同步
代码,在主线程中进行。 - 读取到第二句,是个
异步
代码,放在浏览器中进行。 - 第三句,参考第一句。
所以,异步
操作,首先将异步
代码放在浏览器中,因为浏览器中是多线程
的,返回顺序也就不一样。
简单来说,一个任务不是连续完成的,可以理解为该任务被分成了两段执行,先执行第一段,转而执行其他任务,等做好了准备,转而执行第二段。
比如文件读取
,任务第一段是想操作系统发送请求,要求读取文件。然后,程序执行其他任务,等操作系统返回文件,再执行任务的第二段(处理文件)。这种不连续的操作,就叫异步
。
回调函数
JavaScript对异步
编程的实现,就是回调函数
,就是把任务的第二段单独写在一个函数里面,等重新执行这个任务的时候,就调用这个函数。
fs.readFile('/etc/passwd', 'utf-8', function (err, data) {
if (err) throw err;
console.log(data);
});
复制代码
测验
console.log(-1);
setTimeout(function(){
console.log(0);
},0);
setTimeout(function(){
console.log(1);
},1000);
setTimeout(function(){
console.log(2);
},100);
setTimeout(function(){
console.log(3);
},0);
setTimeout(function(){
console.log(4);
},1000);
setTimeout(function(){
console.log(5);
},1000);
setTimeout(function(){
console.log(6);
},200)
// -1,0,3,2,6
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END