加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读