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

最佳答案

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

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

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

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

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

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

    10-10 11:30