angularJs中$q的两种写法

Posted 飞凡123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularJs中$q的两种写法相关的知识,希望对你有一定的参考价值。

带缓存处理的两种写法

过程:点击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的两种写法的主要内容,如果未能解决你的问题,请参考以下文章

Select2 for AngularJS 中的两种方式数据绑定不起作用

clear-fix清除浮动的两种写法

快排的两种写法

angularJs模版注入的两种方式

AngularJs 中的两种方式数据绑定不使用异步回调

Angularjs 实现 $(document).ready()的两种方法