在AngularJS中更改为新的$ q语法

时间:2016-02-12 11:22:39

标签: angularjs q eslint

我有以下代码

function onpagechange(page, limit)
{
    var  deferred = $q.defer();
    loadUsers(deferred);
    return deferred.promise;
}

通过eslint给出了以下错误:You should not create a new promise with this syntax. Use the $q(function(resolve, reject)

迁移到新的$ q语法的最佳方法是什么。如果我100%确定函数返回的是什么,我想我会更好地处理这个问题。

2 个答案:

答案 0 :(得分:3)

根据文档,$q constructor返回一个可以在传递给它的函数中解析的promise。

更新

function onpagechange(page, limit)
{
    return $q(loadUsers)
}

function loadUsers(resolve, reject) {
    return $http().then(resolve, reject);
}

答案 1 :(得分:-1)

在你的loadUsers函数中你必须:

  1. 通过调用defer.resolve(result);
  2. 来解析带有值的派生承诺

    1. 拒绝派生的承诺,理由为:defer.reject(reason);
    2. 例如:

      function onpagechange(page, limit)
         {
          var  deferred = $q.defer();
          loadUsers(deferred);
          return deferred.promise;
          }
      
         function loadUsers(defer)
          {
            $http.get('users.json').success(function(result) {
              defer.resolve(result);
             }).error(function(err){
              defer.reject(err);
             });    
           }