【发布时间】:2017-10-30 21:14:07
【问题描述】:
我正在尝试使用 JSCore 从 Swift 中的 javascript SDK 执行异步函数。我已经能够完成评估和查看脚本的内容,但在实际调用异步函数时没有成功。这是我的代码,用于验证我什至已经阅读了脚本。关于如何实现这一点的任何想法?
lazy var context: JSContext? = {
let context = JSContext()
guard let
commonJSPath = Bundle.main.path(forResource: "test", ofType: "js") else {
print("Unable to read resource files.")
return nil
}
do {
let common = try String(contentsOfFile: commonJSPath, encoding: String.Encoding.utf8)
_ = context?.evaluateScript(common)
} catch (let error) {
print("Error while processing script file: \(error)")
}
return context
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
setupJS()
}
func setupJS(){
guard let context = context else {
print("JSContext not found.")
return
}
let dictionary = context.objectForKeyedSubscript("MainObject").toDictionary()
print(dictonary)
//let script = "const {variableName} = FooJS;";
//let result = context.evaluateScript(script)
}
我想做async function doSomething(){ return 'hello world!'; }
console.log(await doSomething());之类的事情
【问题讨论】:
-
你怎么知道它没有成功?问题是您希望 Swift 运行时等待一些同步“完成”还是什么?
-
我有 2 个问题,一个是下标要调用的实际函数,然后在 Swift 中等待结果
标签: javascript ios swift javascriptcore