【问题标题】:cordova filereader blocks execution of javascript code科尔多瓦文件阅读器阻止 javascript 代码的执行
【发布时间】:2014-08-26 15:29:20
【问题描述】:

我正在构建 cordova + angularjs 应用程序(在 typescript 和 ng-cordova 的帮助下)。
我有一个科尔多瓦 fileReader 函数的问题,该函数假设是异步的,但在我的情况下,它会阻止其他 javascript 代码的执行,包括执行 ng-click 指令。虽然科尔多瓦读取大小为 10 mb 的书籍索引,但所有 UI 组件不回应。

loadIndexFromBookFolder(bookFolder: string): ng.IPromise<ft.ILoadIndex> {
    var currentClass: SearchService = this;
    var deferred = this.$q.defer<ft.ILoadIndex>();

    this.$cordovaFile.readFile(bookFolder + '/index').then(function (idx) {
        currentClass.$cordovaFile.readFile(bookFolder + '/idMap').then(function (idMap) {
              deferred.resolve({ index: lunr.Index.load(JSON.parse(idx)), idMap: JSON.parse(idMap) });
        }, failed);
    }, failed);

    var failed = (err) => {
        this.$log.debug('error: ' + err); 
        deferred.reject();
    };

    return deferred.promise;
}

如果 cordova 文件读取器是异步的,那么还有什么可能导致阻塞 java 脚本出现此类问题?

【问题讨论】:

  • 您使用的是什么平台?我可能是某些平台是同步的,而其他平台是异步的。

标签: javascript angularjs cordova


【解决方案1】:

我在使用 cordova 和 angular (Ionic 2) 时遇到了类似的问题,也许这可以帮助你:

尝试更改 cordova.jspolyfill.js 脚本的加载顺序,在我的情况下,在 cordova 脚本完全解决这个问题之前加载“polyfill.js”脚本问题。

我在这里找到了这个解决方案here,关于这个问题的更多信息你可以找到here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多