JSCore를 사용하여 Swift의 javascript SDK에서 비동기 함수를 실행하려고합니다. 스크립트의 내용을 평가하고 볼 수 있지만 실제로 비동기 함수를 호출하는 데 실패했습니다. 다음은 스크립트를 읽었 음을 확인하는 코드입니다. 이 작업을 수행하는 방법에 대한 의견이 있으십니까?JavaScriptCore를 사용하여 Swift의 javascript SDK에서 비동기 javascript 함수를 호출하는 방법
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 런타임이 동기화 된 "finish"또는 어떤 것을 기다리는 것이 문제입니까? – Pointy
2 가지 문제가 있습니다. 하나는 실제 함수 호출에 subscripting 한 다음 Swift에서 결과를 기다리는 것입니다. – iPhonig