什么是异步编程
故名思意,不是同步即为异步,那么什么是异步编程呢?
请大家先看以下代码
console.log('start');
setTimeout(()=>{
console.log('这里的代码2秒后执行...');
},2000);
console.log('end');
执行结果想必大家都能猜得出来,程序执行完毕后:
start
end
这里的代码2秒后执行…
那么大家再来看下面代码
for(let i=0;i<10000;i++){
console.log(i);
}
console.log('end');
上面代码中,会执行10000次循环,循环结束后,才会执行下面代码;
这个代码就是同步代码,for循环无论执行多久,下面代码都要等待它执行完毕后才会执行。
而最上面的代码却不是这样,那么这是什么原因呢?
原因其实很简单,不仅是nodejs中,还是我们Javascript中都会产生这种现象,要想明白这个原因首先大家
要先搞懂,js代码的执行原理。
在js中,代码会在执行栈中依次执行,如果执行到回调函数,则会把回调函数放入任务队列,等待执行,如果执行栈中的代码执行完毕后,再去依次执行任务队列中的代码。
nodejs也是同样原理。