1.nodeJS是单线程,为什么每个API又可以作为一个独立线程运行?
2.最后一条具体怎么理解?
推荐我之前写的一篇文章https://segmentfault.com/a/1190000005173218
nodejs是事件驱动型的,事件驱动的观察者运行在单线程中,当调用异步函数的时候,该线程就会将这些函数任务布置下去,比如读取一个文件,监听某个端口,都会调用libuv
库开启一个新的线程。但是并不是所有异步函数都会开启一个新的线程,可能只是简单的运行在单线程中。
单线程就是在一个whilte(true)
里面检测事件队列有没有新的事件发生,比如文件读取结束了,或者是settimeout
计时结束了,都会将一个事件推入到事件队列中,观察者每隔一段时间就去看看事件队列中有没有新的事件,有的话就会去暂停while(true)
循环,然后调用回调函数执行,执行完毕后再开始while(true)
循环