码迷,mamicode.com
首页 > Web开发 > 详细

angularJs中$q的两种写法

时间:2016-12-26 18:39:52      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:https   efi   target   eject   var   log   请求   过程   turn   

带缓存处理的两种写法

过程:点击button触发load()方法,请求数据成后显示到页面中。如果已经请求过则从缓存中读取。

在线浏览

写法1:

    function demo(){
      if (demo.cache == undefined) {
        return $http.get(‘https://api.github.com/users/github‘)
          .success(function(data, status, headers){
            demo.cache = data;
            return $q(function (resolve, reject) {
              resolve(demo.cache);
            });
          })
      }else {
        console.log(‘from cache‘);
        return $q(function (resolve, reject) {
          resolve(demo.cache);
        });
      }
    }


    // 点击加载
    $scope.load = function() {
      demo().then(function(data){
        $scope.list = data.data;
      })
    }

写法2:

感觉第二种写法好些,注意细节。

    function demo(){
      var deferred = $q.defer();
      if (demo.cache == undefined) {
        $http.get(‘https://api.github.com/users/github‘)
          .success(function(data, status, headers){
            demo.cache = data;
            deferred.resolve(demo.cache);
          })
      }else {
        console.log(‘from cache‘);
        deferred.resolve(demo.cache);
      }
      return deferred.promise; 
    }


    // 点击加载
    $scope.load = function() {
      demo().then(function(data){
        $scope.list = data;
      })
    }

 

angularJs中$q的两种写法

标签:https   efi   target   eject   var   log   请求   过程   turn   

原文地址:http://www.cnblogs.com/mafeifan/p/6223259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!