标题
$q是angularjs 内置的一种服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值()
标题
$q.defer()可以创建一个deferred实例
deferred.promise返回deferred实例的处理结果
deferred.resolve(text);成功解决了。参数text将来会被用作promise.then(successCallback(text){…}, errorCallback(reason){…}, notifyCallback(notify){…})中函数的参数。
angular.module('raw.services', [])
.factory('dataService', function ($http, $q, $timeout) {
return {
loadText : function(file){
var deferred = $q.defer();
var reader = new FileReader();
reader.onload = function(e) {
var text = reader.result;
console.log('services:loadText'+text);
deferred.resolve(text);
};
reader.readAsText(file);
return deferred.promise;
},
}
})
参数text将来会被用作promise.then(successCallback(text){…}, errorCallback(reason){…}, notifyCallback(notify){…})中函数的参数。
dataService.loadText(file)
.then(text => {
$scope.fileName = file.name;
parseText(text);
})