javascript - 使用 JavascriptCore 在 iOS 中解决 Javascript promise

标签 javascript ios swift javascriptcore

我目前有一些外部 Javascript 代码(异步执行),iOS 应用程序与之交互并可以有条件地评估部分代码。现在,当 Javascript 函数返回时,它们会向需要解析的 iOS 应用程序返回一个“ promise ”。有什么办法可以通过 JavascriptCore 解决 iOS 中的 promise ;还是我在这里打了一场必败之战,我是否应该在将值返回到 iOS 之前解决 Javascript 中的“所有” promise ?

最佳答案

看看这个库: https://github.com/marcuswestin/WebViewJavascriptBridge 至少作为一个例子。

它不会将 js Promise 管理为原生代码中的 JS 结果,我认为这是不可能的,但它实现了一种管理来自原生代码的异步 JS 调用的方法。

如果我没记错的话,管理异步 JS 调用的主要逻辑是:

  1. 当 native 代码需要调用异步 JS 方法时,它会将 native 回调存储到回调注册表中并为其分配一个标识符。
  2. 然后它调用传递回调标识符的 JS 方法。
  3. 当异步 JS 方法结束时(使用 Promise 或其他),它会使用相同的回调标识符调用 native 代码。
  4. 这允许 native 代码调用存储在注册表中的回调。

该库结构良好,允许处理程序注册等...,但我认为 Native-->JS 调用的原始逻辑基本上就是这样。

关于javascript - 使用 JavascriptCore 在 iOS 中解决 Javascript promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615147/

相关文章:

javascript - 使用 AJAX/JSON 自动更新动态

ios - swift 自定义 .framework 找不到协议(protocol)

swift - 类型为 'String' 的表达式模式无法匹配类型为“NSStoryboardSegue.Identifier”的值

javascript - JavaScript 中的复选框

javascript - 如何编写正则表达式来动态更改产品 ID 和 anchor 标记

javascript - 如何通过变量引用父对象?

ios - iOS 中的 gnuplot

iOS N 如何获取所有 User-Agent 字符串

iphone - 如何找到CAKeyframeAnimation之间的对象的坐标?

swift - 可以扩展 Kotlin 类以符合接口(interface)(就像 Swift 类一样)吗?