Angular JS $ http.success()vs $ q.resolve()?

时间:2015-07-02 19:38:09

标签: javascript angularjs

我试图找出承诺...简单地制作一个$ http请求,然后根据是否成功(.success())&与使用q.resolve()的promise(q = $ q.defer())相比,它失败了(.fail())?

2 个答案:

答案 0 :(得分:3)

<nav class="navbar navbar-default"> <div id="menu" class="container-fluid"> <div class="navbar-header"> <button class="navbar-toggle" aria-expanded="true" data-target="#bs-example-navbar-collapse-1" data-toggle="collapse" type="button"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="">TRILLSOFT</a> </div> <div id="bs-example-navbar-collapse-1" class="navbar-collapse collapse in" aria-expanded="true" style=""> <ul class="nav nav-pills"> <li class="active"> <a href="#TAPL" data-toggle="tab" aria-expanded="true">TAPL</a> </li> <li class=""> <a href="#productorderedit" data-toggle="tab" aria-expanded="false">productorderedit</a> </li> </ul> <div class="tab-content"> <div id="TAPL" class="tab-pane fade active in"> <li class="dropdown open"> <a class="dropdown-toggle" data-toggle="dropdown" href="#" aria-expanded="true"> Project Orders <span class="caret"></span> </a> <ul class="dropdown-menu"> <li> <a href="#">Project Order Lookup</a> </li> <li> <a href="#">Project Order Lookup of my Active projects</a> </li> </ul> </li> </div> <div id="productorderedit" class="tab-pane fade"> <li> <a href="#">Release</a> </li> <li> <a href="#">FSC Labels</a> </li> <li> <a href="#">Unrelease Selected Items</a> </li> </div> </div> </div> <ul class="nav nav-pills navbar-right"> <li> <div> Logged in as dshah | <a href="/app_dev.php/logout"> Logout</a> </div> </li> </ul> </div> 本身使用$http。这两项服务都没有在同一级别运作。

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

.fail()是一项创建自己承诺的服务。

使用$q是了解承诺的好方法,但在您的情况下,$q已经为您完成了这项工作。

答案 1 :(得分:0)

无。 $http方法返回promise。简而言之,它们也可以与then链接。 successfail仅限解决方案,仅限拒绝then