node app里面除了你自己以外的所有代碼都是并行執(zhí)行的,舉個例子,你的代碼(回調(diào)函數(shù))是國王,node的代碼是士兵(例如createServer
readFile
writeFile
...),國王向士兵發(fā)完tasks之后就可以回去睡個懶覺,士兵在外面執(zhí)行tasks,等士兵們完成自己手中tasks時,便等候在國王的任務(wù)隊列中等待報告,以便國王隊任務(wù)完成報告做進一步指示(callback)
用代碼來演示
let fs = require('fs')
fs.readFile('file1.txt',function(report){
console.log("Solder 1's report")
})
fs.writeFile('file2.txt','this is file2',function(){
console.log('Solder 2\'s report')
})
這里node自身的fs.readFile
和fs.writeFile
是同時執(zhí)行的,而各自的回調(diào)函數(shù)執(zhí)行順序則根據(jù)fs.readFile
和fs.writeFile
的完成時間而定
這就是高并發(fā)/單進程/事件循環(huán)的精髓了
優(yōu)勢
- 低相應(yīng)時間/高并發(fā) 這都是node擅長的