2016-11-01 1 views
5

JavaScriptCore 프레임 워크를 사용하여 iOS에서 다음 javascript 코드를 실행합니다. 자바 스크립트 코드가 브라우저 화됩니다.JavaScriptCore에서 JavaScript 코드를 실행하는 동안 '컴파일 중 오류 발생'

var myCallback = undefined; 

*browserify logic* 
{ 
1: [function(require, module, exports) { 

    var q = require('./user'); 

    var p = new Promise(function(resolved, reject) { 
          myCallback = function() { 
           resolved('test'); 
          } 
         }); 

    p.then(function(x) {printFunc('test');}).catch(function(e){printFunc('test2');}); 

    q(); 

    }, { 
    "./user": 2 
    }], 
2: [function(require, module, exports) { 
    function q() { 
     printFunc("Callback called!"); 
     myCallback(); 
     printFunc("Callback called end!"); 
    } 
    module.exports = q; 
    }, {}] 
}, {}, [1]); 

printFunc은 콘솔로 뭔가를 인쇄 스위프트 구현하는 방법입니다.

let printFunction : @convention(block) (String) -> String = {input in 
     print("|\(input)|") 
     return "" 
    } 

문제는 나는 다음과 같은 오류가 발생하고 있다는 것입니다 : 여기에 구현은

|Callback called!| 
Error compiling builtin: Invalid private name '@capabilities' 
|Callback called end!| 

더욱 나 지문을 제거하는 경우이다 이상한 "콜백라고!" 및 "콜백은 끝이라고!" 코드가 오류없이 실행되고 "test"가 인쇄됩니다.

혹시이 이상한 행동을 보았습니까? Promise 구현이 알려진 버그입니까?

답변

1

이것은 JavascriptCore의 Promise 구현의 버그입니다. 나는 애플 티켓을 열었고 그 사실을 확인했다.

해결 방법은 Promise 구현을 사용하는 것입니다.

+0

저는이 문제에 대해서도 다루고 있습니다. Promise를 실제로 구현 했습니까? 또는 Apple의 응신 텍스트에서 근본 문제를 해결하는 방법을 이해할 수 있습니까? – InkGolem

+0

누군가가 궁금하다면 Bluebird의 Promise 구현을 사용했고 그 결과로 모든 문제가 즉시 사라졌습니다. – InkGolem