回覆列表
  • 1 # SixClock四兩

    一次兩次非同步回撥還ok,一個操作設計多次巢狀回撥時,程式碼的可讀性以及程式碼的健壯性就是地獄啦!

    想想一下{{{{{{

    //code

    }}}}}}

    這樣的程式碼…完美執行還好,之後要改動或者出現錯誤,簡直不要太酸爽!!

  • 2 # 廖亮

    nodejs中提供非同步操作都是使用回撥函式,比如

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

    //todo...

    })

    在前端這種模式是沒什麼問題的,DOM事件相對而言不會存在互相依賴或需要多個事件一起協作的場景

    但是對於Node而言,事務中存在多個非同步呼叫的場景比比皆是。比如一個遍歷目錄的操作,程式碼如下:

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

    files.forEach(function (filename, index) {

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

    // todo

    })

    })

    })

    當然這個還是比較好的情況,很多時候業務邏輯很複雜,巢狀層數更多了.巢狀多了不便於閱讀理解程式碼,顯得很混亂.

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

    dns.promises

    了,比如可以這樣寫:

    const fs = require("fs").promises

    async function main(){

    const data = await fs.readfile("filename")

    //todo

    }

    main()

  • 中秋節和大豐收的關聯?
  • 剛剛出生的嬰兒可能會患哪種病?