1.在node 中,js是单线程的,Node是多线程的。事件驱动的
2.不是I/o的异步APi
setTimeout(),setInterval(),setImmediate,process.nextTick();
process.nextTick()方法可以在当前"执行栈"的尾部-->下一次Event Loop(主线程读取"任务队列")之前-->触发process指定的回调函数。也就是说,它指定的任务总是发生在所有异步任务之前,当前主线程的末尾。放在改事件
3.node异步编程
node再处理异常的形成了一个约定,将异常作为回掉函数放入第一个参数传回,如果为空值,则表明异步回掉没有异常抛出
async(function(err,result){
// todo
})
在自行编写异步的方法上,需要遵循的原则
原则1:必须执行调用者传入的回掉函数
原则2:正确传递异常供回掉者判断