angularjs 异步请求中的简单 .then 或 $q 服务
angularjs simple .then or $q service in async requests
我不知道 AngularJS $q
服务和在异步请求后简单地使用 .then()
之间的确切区别是什么。
.then()
的简单示例:
function InboxService($http) {
this.getEmails = function getEmails() {
return $http.get('/emails');
};
}
并且在使用该服务时(只是部分代码):
InboxService.getEmails()
.then(function (response) {
// use response
});
与 $q
服务 和 resolve 和 reject 有什么区别?
What is the difference with $q service with resolve and reject ?
我假设您是在询问 var deferred = $q.defer()
与后续 deferred.resolve()
或 deferred.reject()
的用法?在这种情况下,答案是您不需要它,因为您已经有一个由 $http
服务编辑的承诺对象 return。事实上,不推荐使用 $q
手动构造另一个新的承诺,并认为是 anti-pattern。
如果您使用尚未包装到 promise 中的异步函数(超时,ajax-请求),那么在这种情况下您可能想要使用 $q
创建return 承诺。但是再一次,在您的情况下,您不需要它,因为 $http
服务为您构造了承诺,而另一个只是多余的。
$q 是多余的,在大多数情况下不需要。 http://www.codelord.net/2015/09/24/$q-dot-defer-youre-doing-it-wrong/
我不知道 AngularJS $q
服务和在异步请求后简单地使用 .then()
之间的确切区别是什么。
.then()
的简单示例:
function InboxService($http) {
this.getEmails = function getEmails() {
return $http.get('/emails');
};
}
并且在使用该服务时(只是部分代码):
InboxService.getEmails()
.then(function (response) {
// use response
});
与 $q
服务 和 resolve 和 reject 有什么区别?
What is the difference with $q service with resolve and reject ?
我假设您是在询问 var deferred = $q.defer()
与后续 deferred.resolve()
或 deferred.reject()
的用法?在这种情况下,答案是您不需要它,因为您已经有一个由 $http
服务编辑的承诺对象 return。事实上,不推荐使用 $q
手动构造另一个新的承诺,并认为是 anti-pattern。
如果您使用尚未包装到 promise 中的异步函数(超时,ajax-请求),那么在这种情况下您可能想要使用 $q
创建return 承诺。但是再一次,在您的情况下,您不需要它,因为 $http
服务为您构造了承诺,而另一个只是多余的。
$q 是多余的,在大多数情况下不需要。 http://www.codelord.net/2015/09/24/$q-dot-defer-youre-doing-it-wrong/