【发布时间】: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