Cordova文件阅读器阻塞javascript代码的执行

cordova filereader blocks execution of javascript code

本文关键字:javascript 代码 执行 文件 Cordova      更新时间:2023-09-26

我正在构建cordova + angularjs应用程序(借助typescript和ng-cordova)。
我有一个cordova fileReader函数的问题,假设是异步的,但在我的情况下,它阻止了其他javascript代码的执行,包括执行ng-click指令。当cordova读取一个10mb大小的图书索引时,所有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 filereader是异步的,那么还有什么可以导致阻塞java脚本这样的问题?

我有一个类似的问题使用cordova和angular (Ionic 2),也许这可以帮助你:

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

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