角赫特普罗:“成功”/“错误”方法与“那”论据的区别

角赫特普罗:“成功”/“错误”方法与“那”论据的区别

根据安古拉JS医生,呼叫$http返回以下内容:

返回承诺对象使用标准然后方法和两个特定于http的方法:成功误差..这个然后方法使用两个参数成功和一个误差回调,它将使用响应对象调用。这个成功误差方法采用单个参数-在请求成功或失败时将分别调用该函数。传递给这些函数的参数是传递给当时方法的响应对象的非结构化表示。

除了response对象在一种情况下是非结构化的,我不知道

  • 的参数传递的成功/错误回调。

    promise.then

  • 类的参数传递给回调。

    promise.success/promise.error

    承诺的方法

有吗?这两种不同的方式传递看似相同的回调有什么意义?


慕勒3428872
浏览 340回答 3
3回答

炎炎设计

铌这个答案实际上是不正确的;正如下面的评论所指出的,成功()确实回报了最初的承诺。我不会改变,把它留给OP编辑。两者的主要区别在于.then()调用返回承诺(通过回调返回的值解析).success()是注册回调的更传统的方式,不返回承诺。基于承诺的回调(.then())使它更容易连锁承诺(做一个电话,解释结果和然后再打一次电话,解释结果,再打一次电话等等)。这个.success()方法是一种简化、方便的方法,当您不需要链接调用或使用承诺API时(例如,在路由方面)。简言之:.then()-承诺API的全部功能,但稍微详细一些.success()-不回承诺,但略带约束的语法

ABOUTYOU

这里已经有一些很好的答案了。但是,值得证明的是,提供的并行性的不同之处在于:success()返回原来的承诺then()回报一个新的承诺区别是then()驱动顺序操作,因为每个调用都返回一个新的承诺。$http.get(/*...*/).   then(function seqFunc1(response){/*...*/}).   then(function seqFunc2(response){/*...*/})$http.get()seqFunc1()seqFunc2()success()驱动并行操作,因为处理程序是按照相同的承诺链接的。$http(/*...*/).   success(function parFunc1(data){/*...*/}).   success(function parFunc2(data){/*...*/})$http.get()parFunc1(), parFunc2()并行

料青山看我应如是

一些简单GET请求的代码示例。也许这有助于理解不同之处。使用then:$http.get('/someURL').then(function(response) {     var data = response.data,         status = response.status,         header = response.header,         config = response.config;     // success handler}, function(response) {     var data = response.data,         status = response.status,         header = response.header,         config = response.config;     // error handler});使用success/error:$http.get('/someURL').success(function(data, status, header, config) {     // success handler}).error(function(data, status, header, config) {     // error handler});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

AngularJS