色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

為什么NodeJS的回調(diào)會(huì)被稱為地獄?

李中冰2年前13瀏覽0評論

nodejs中提供異步操作都是使用回調(diào)函數(shù),比如

fs.readFile('filename',function(err,data){

//todo...

})

在前端這種模式是沒什么問題的,DOM事件相對而言不會(huì)存在互相依賴或需要多個(gè)事件一起協(xié)作的場景

但是對于Node而言,事務(wù)中存在多個(gè)異步調(diào)用的場景比比皆是。比如一個(gè)遍歷目錄的操作,代碼如下:

fs.readdir(path.join(__dirname,'..'),function(err,files){

files.forEach(function(filename,index){

fs.readFile(filename,function(err,file){

//todo

})

})

})

當(dāng)然這個(gè)還是比較好的情況,很多時(shí)候業(yè)務(wù)邏輯很復(fù)雜,嵌套層數(shù)更多了.嵌套多了不便于閱讀理解代碼,顯得很混亂.

但好消息是Nodejs8提供了ES7的async/await語法糖,讓我們可以寫出更優(yōu)雅的代碼.而且Nodejs官方自帶庫也在改變支持async/await,在Nodejs10中可以使用fs.promises,

dns.promises

了,比如可以這樣寫:

constfs=require('fs').promises

asyncfunctionmain(){

constdata=awaitfs.readfile('filename')

//todo

}

main()