Ich habe derzeit einige externe Javascript
Code (, die asynchron ausgeführt wird), die eine iOS-App mit Schnittstellen und kann Teile von bedingt bewerten. Gerade jetzt, wenn die Javascript
Funktionen zurückkehren, geben sie ein "Versprechen" an die iOS App zurück, die gelöst werden muss. Gibt es eine Möglichkeit, ein Versprechen in iOS über JavascriptCore
zu lösen; oder kämpfe ich hier einen verlustreichen Kampf und sollte ich stattdessen "alle" Versprechen in Javascript
lösen, bevor ich Werte zurück an iOS zurückgebe?Auflösen eines Javascript-Versprechens in iOS mit JavascriptCore
2
A
Antwort
0
Werfen Sie einen Blick auf diese Bibliothek: https://github.com/marcuswestin/WebViewJavascriptBridge zumindest als Beispiel.
Es verwaltet js Promise nicht als JS-Ergebnis in nativem Code, was meiner Meinung nach nicht möglich ist, aber es implementiert eine Möglichkeit, async JS-Aufrufe von systemeigenem Code zu verwalten.
Wenn ich mich nicht falsch, die Hauptlogik zu verwalten async JS nennt, ist:
- Wenn nativen Code benötigt async JS-Methode aufrufen, speichert nativen Rückruf in einen Rückrufe Registry und weisen Sie ihm eine Kennung .
- Dann ruft es die JS-Methode auf und übergibt die Rückrufkennung.
- Wenn die asynchrone JS-Methode endet (mit Promise oder was auch immer), ruft sie systemeigenen Code mit derselben Rückrufkennung auf.
- Dadurch kann der systemeigene Code den in der Registrierung gespeicherten Rückruf aufrufen.
Die Bibliothek ist gut strukturiert erlaubt Handler Registrierung etc ..., aber ich denke, die rohe Logik für Native -> JS Anrufe ist im Grunde das.
Verwandte Themen
- 1. Laden AMD Modul in JavaScriptCore
- 2. UIWebView iOS 5: WebKit/JavaScriptCore Absturz
- 3. JavaScriptCore Absturz
- 4. Wie behandelt man Javascript Promises in iOS JavaScriptCore
- 5. Auflösen von SRV-Einträgen mit iOS SDK
- 6. Wie kann JavaScriptCore für iOS-Geräte erstellt werden?
- 7. Wie Unterfunktion in JavascriptCore aufrufen?
- 8. SpiderMonkey vs JavaScriptCore vs?
- 9. Auflösen eines Versprechen-Arrays
- 10. Auflösen eines JavaScript-Versprechens
- 11. Auflösen eines Hostnamens aus Bonjour-Netzwerken
- 12. Auflösen eines Klassennamenskonflikts in einer Rails-Anwendung
- 13. Variable Argumentliste zu JavascriptCore Block
- 14. Wrap javaScriptCore Laufzeit in Android-App
- 15. Auflösen eines Zirkelverweises in C++ - Header-Dateien
- 16. Möglich in swift, einen rekursiven Funktionsaufruf mit Javascriptcore zu tun?
- 17. Auflösen eines Pfadnamens mit .. Elternverzeichnisbezeichner ("dot dot") ohne Auflösen von Symlinks
- 18. JavaScriptCore funktioniert nicht anders als 'Hallo, Welt'
- 19. Auflösen eines Namespaces mithilfe der Tastatur
- 20. String zu einer Eigenschaft eines Objekts auflösen
- 21. Wie simuliere ich programmgesteuert das Auflösen eines Zusammenführungskonflikts mit GitPython?
- 22. Auflösen eines verzögerten Q mehrere Male
- 23. Auflösen des Metadatentokens eines generischen Typparameters
- 24. Auflösen eines setTimeout im API-Endpunkt
- 25. Async-Kommunikation von Swift und Javascriptcore
- 26. Aufnahme von Audio und Weitergabe der Daten an ein UIWebView (JavascriptCore) auf iOS 8/9
- 27. Kreisabhängigkeit mit Dependency Injection auflösen
- 28. IOS: Deaktivieren Spirale eines Superview in IOS
- 29. Konnte Typ mit Token nicht auflösen 0100000f
- 30. Auflösen von Ausdruck in C++