異步I/O,又稱非阻塞式I/O,與你們習慣性的線性思惟相去甚遠。node
同步I/O:或者叫阻塞式I/O一個線程只能處理一項任務,咱們以前的經驗就是,若是用戶體驗卡,就粗暴簡單的開多線程編程
平常線性思惟: A->B->C 等A操做I/O完成以後,才能進行B,每一個線程都是這樣的
因此說單線程、非阻塞付出的成本就在編程思惟的改變。多線程
咱們在node.js中體驗一下併發
//異步讀取 let fs=require('fs'); fs.readFile('app.js','utf-8',function(err,data){ if(err){ console.error(err);} else{ console.log(data)} }); console.log('not support Chinese'); //輸出結果以下 not support Chinese fileContent
//同步讀取 let fs=require('fs'); let data=fs.readFileSync('app.js','utf-8'); console.log(data); console.log('not support Chinese'); //輸出結果是 data not support Chinese
事件app
剛纔上面提到事件循環:在Node中有一個事件隊列。本質上程序的入口就是第一個事件循環的回調函數異步