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

Changing to new $q syntax in AngularJS

我有以下代码

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% 确定函数返回的是什么,我想我会更好地处理这个问题。

根据文档,$q constructor returns 一个可以在您传递给它的函数中解决的承诺。


更新:

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

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

在您的 loadUsers 函数中,您必须:

  1. 通过调用 :defer.resolve(result);
  2. 用值解析派生的 promise

  1. 拒绝派生的承诺,原因是:defer.reject(reason);

例如:

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);
       });    
     }