AngularJS承诺通知不工作

前端之家收集整理的这篇文章主要介绍了AngularJS承诺通知不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下控制器代码
.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)

看来你不能在通知返回承诺对象之前调用通知,这是有道理的.

猜你在找的Angularjs相关文章