AngularJS承诺通知不工作
发布时间:2020-12-17 07:46:02 所属栏目:安全 来源:网络整理
导读:我有以下控制器代码: .controller('Controller1',function ($scope,MyService) { var promise = MyService.getData(); promise.then(function(success) { console.log("success"); },function(error) { console.log("error"); },function(update) { console
我有以下控制器代码:
.controller('Controller1',function ($scope,MyService) { var promise = MyService.getData(); promise.then(function(success) { console.log("success"); },function(error) { console.log("error"); },function(update) { console.log("got an update!"); }) ; } 在我的services.js中: .factory('MyService',function ($resource,API_END_POINT,localStorageService,$q) { return { getData: function() { var resource = $resource(API_END_POINT + '/data',{ query: { method: 'GET',isArray: true } }); var deferred = $q.defer(); var response = localStorageService.get("data"); console.log("from local storage: "+JSON.stringify(response)); deferred.notify(response); resource.query(function (success) { console.log("success querying RESTful resource") localStorageService.add("data",success); deferred.resolve(success); },function(error) { console.log("error occurred"); deferred.reject(response); }); return deferred.promise; } } }) 但是由于某种原因,deferred.notify调用似乎没有执行并在控制器中被接收.这里有没有什么不对?我不知道如何使通知执行.
我设法通过在$timeout函数中包装notify来获取它的工作:
$timeout(function() { deferred.notify('In progress')},0) 看来你不能在通知返回承诺对象之前调用通知,这是有道理的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |