Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular JS$http.success()与$q.resolve()?_Javascript_Angularjs - Fatal编程技术网

Javascript Angular JS$http.success()与$q.resolve()?

Javascript Angular JS$http.success()与$q.resolve()?,javascript,angularjs,Javascript,Angularjs,我在试着找出承诺。。。与带有q.resolve()的承诺(q=$q.defer())相比,简单地发出一个$http请求,然后根据什么是成功的(.success())、什么是失败的(.fail())采取行动有什么区别$http方法返回承诺。简言之,它们也可以通过然后链接success和fail仅用于解决问题,而仅用于拒绝,然后s.

我在试着找出承诺。。。与带有q.resolve()的承诺(q=$q.defer())相比,简单地发出一个$http请求,然后根据什么是成功的(.success())、什么是失败的(.fail())采取行动有什么区别
$http
方法返回承诺。简言之,它们也可以通过
然后
链接
success
fail
仅用于解决问题,而仅用于拒绝
,然后
s.

本身使用
$q
。这两项服务不是在同一水平上运行的

$http.get(url)
返回可以解析或拒绝的承诺。这意味着您正在使用由服务($http)提供的承诺。在内部,
$http
将调用
$q.defer()
,然后
$q.resolve()
$q.reject()
。这将调用您的
.success()
.fail()
方法

$q
是一项创建您自己承诺的服务


使用
$q
是了解承诺的一个很好的方法,但在您的情况下,
$http
已经为您做了这项工作

我不确定我是否理解你的问题。您如何使用
$q.defer
发出
$http
请求?如果您没有发出请求,那么这显然就是区别所在。$http legacy promise方法success和error/fail已被弃用。是的,成功和错误/失败已被弃用,取而代之的是then。但核心答案保持不变
$http
返回一个承诺,并
$q
“创建”一个承诺。在
then()。