2016-09-21 38 views
2

我目前有一些外部的Javascript代碼(,異步執行),iOS應用程序接口並可以評估有條件的部分。現在,當Javascript函數返回時,它們會返回需要解析的iOS應用程序的「承諾」。有沒有辦法通過JavascriptCore解決iOS中的承諾;還是我在這裏打敗了一場失敗的戰鬥,而我是否應該在返回值返回iOS之前解決Javascript中的「全部」承諾?使用JavascriptCore解決iOS中的Javascript承諾

回答

0

看一看這個庫: https://github.com/marcuswestin/WebViewJavascriptBridge 至少作爲一個例子。

它不管理js Promise作爲本機代碼中的JS結果,我認爲這是不可能的,但它實現了一種方法來管理來自本機代碼的異步JS調用。

如果我沒有錯,主要邏輯來管理異步調用JS是:

  1. 當本地代碼需要異步JS方法調用,它存儲本地回調到一個回調的註冊表,併爲其分配標識符。
  2. 然後它調用傳遞迴調標識符的JS方法。
  3. 當異步JS方法結束時(使用Promise或其他),它使用相同的回調標識符調用本地代碼。
  4. 這允許本機代碼調用存儲在註冊表中的回調函數。

該庫結構良好,允許處理程序註冊等,但我認爲Native - > JS調用的原始邏輯基本上就是這樣。