1. 程式人生 > 實用技巧 >Java通過JNA呼叫dll或so

Java通過JNA呼叫dll或so

同步非同步

  • 同步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 方法讀取