'在JavaScriptCore中执行JavaScript代码时编译内置错误'

vla*_*dan 5 javascript ios javascriptcore

我使用JavaScriptCore框架在iOS中执行以下javascript代码.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]);
Run Code Online (Sandbox Code Playgroud)

printFunc是一个在Swift中实现的方法,只是打印一些东西到控制台.这是实施:

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

问题是我收到以下错误:

|Callback called!|
Error compiling builtin: Invalid private name '@capabilities'
|Callback called end!|
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,如果我删除印刷品"Callback called!" 和"回叫叫做结束!" 代码执行时没有错误,并打印"test".

你们有没遇到过这种奇怪的行为?它是Promise实现的已知错误吗?

vla*_*dan 1

这是 JavascriptCore 的 Promise 实现中的一个错误。我在Apple开了一张票并且已经确认了。

解决方法是使用您自己的 Promise 实现。