在 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 函数中,您必须:
- 通过调用 :
defer.resolve(result);
用值解析派生的 promise
或
- 拒绝派生的承诺,原因是:
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);
});
}
我有以下代码
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 函数中,您必须:
- 通过调用 :
defer.resolve(result);
用值解析派生的 promise
或
- 拒绝派生的承诺,原因是:
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);
});
}