我正在构建cordova + angularjs应用程序(在打字稿和ng-cordova的帮助下) 我有一个cordova fileReader函数的问题,它假设是异步的但在我的情况下它会阻止执行其他javascript代码,包括执行ng-click指令..而cordova读取的书索引大小为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脚本的问题?