【问题标题】:'Error compiling builtin' while executing JavaScript code in JavaScriptCore在 JavaScriptCore 中执行 JavaScript 代码时出现“编译内置错误”
【发布时间】:2016-11-01 20:02:31
【问题描述】:

我使用 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]);

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

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

问题是我收到以下错误:

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

更奇怪的是,如果我删除打印“Callback called!”和“回调调用结束!”代码执行没有错误,并打印“test”。

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

【问题讨论】:

    标签: javascript ios javascriptcore


    【解决方案1】:

    这是 JavascriptCore 的 Promise 实现中的一个错误。我在 Apple 开了一张票,它被确认了。

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

    【讨论】:

    • 我也遇到了这个问题。你有 Promise 的有效实现吗?或者 Apple 的回复文本,以便我了解如何解决根本问题?
    • 如果有人好奇,我使用了 Bluebird 的 Promise 实现,它作为一个插件运行。所有问题立即消失。
    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多