【问题标题】:Resolving a Javascript promise in iOS using JavascriptCore使用 JavascriptCore 解决 iOS 中的 Javascript 承诺
【发布时间】:2016-09-21 11:21:17
【问题描述】:

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

【问题讨论】:

    标签: javascript ios swift javascriptcore


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2016-12-23
      相关资源
      最近更新 更多