我目前有一些外部 Javascript
代码(异步执行),iOS 应用程序与之交互并可以有条件地评估部分代码。现在,当 Javascript
函数返回时,它们会向需要解析的 iOS 应用程序返回一个“ promise ”。有什么办法可以通过 JavascriptCore
解决 iOS 中的 promise ;还是我在这里打了一场必败之战,我是否应该在将值返回到 iOS 之前解决 Javascript
中的“所有” promise ?
最佳答案
看看这个库: https://github.com/marcuswestin/WebViewJavascriptBridge 至少作为一个例子。
它不会将 js Promise 管理为原生代码中的 JS 结果,我认为这是不可能的,但它实现了一种管理来自原生代码的异步 JS 调用的方法。
如果我没记错的话,管理异步 JS 调用的主要逻辑是:
- 当 native 代码需要调用异步 JS 方法时,它会将 native 回调存储到回调注册表中并为其分配一个标识符。
- 然后它调用传递回调标识符的 JS 方法。
- 当异步 JS 方法结束时(使用 Promise 或其他),它会使用相同的回调标识符调用 native 代码。
- 这允许 native 代码调用存储在注册表中的回调。
该库结构良好,允许处理程序注册等...,但我认为 Native-->JS 调用的原始逻辑基本上就是这样。
关于javascript - 使用 JavascriptCore 在 iOS 中解决 Javascript promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615147/