Java通過JNA呼叫dll或so
阿新 • • 發佈:2020-12-10
同步非同步
-
同步API:只有當前API執行完成後,才能繼續執行下一個API
-
非同步API:當前API的執行不會阻塞後續程式碼的執行
① 非同步API需要通過回撥函式獲取結果 ② fs.readFile讀取檔案和事件處理函式都是要回調函式獲取結果
1)promise
Promise出現的目的是解決Node.js非同步程式設計中回撥地獄的問題。
1、使用 new 構造promise的例項物件 2、promise函式有 resolve 和 reject 兩個引數 3、實際上promise是在非同步API外包裹著它們,並返回執行成功或失敗的結果到外邊 4、使用promise的 then 方法獲取成功結果到外部 5、使用promise的 catch 方法獲取失敗結果到外部,允許鏈式使用
2)promise解決回撥地獄問題
1、先看有幾個非同步API,有幾個非同步API就有幾個promise例項物件
2、建立promise例項物件並放入對應非同步API
3、把各promise放入新建的函式中,並將promise例項物件設定為 return 值
4、呼叫第一個函式,使用 then 方法輸出並設定它的 return 值為下一個要執行的函式
5、使用鏈式 then 方法,即可按照此順序執行多個非同步API
3)es7新增非同步函式
非同步函式是非同步程式設計語法的終極解決方案,它可以讓我們將非同步程式碼寫成同步的形式,讓程式碼不再有回撥函式巢狀,使程式碼變得清晰明瞭。
非同步函式即:在普通函式前面加上 ' async ' 關鍵字
*await關鍵字
① 它只能出現在非同步函式中
① await promise 可以暫停非同步函式的執行 等待promise物件返回結果後再向下執 行
① 它還可以通過返回值方式拿到返回結果
① 它後面只能跟promise物件
*promisify方法
① promisify 方法在 util 模組中
① 它可以 對非同步函式進行包裝,使它返回一個promise物件,以支援promise語法
③ 非同步函式中,使用 run 方法讀取