当前位置: 首页 > 面试题库 >

在AngularJs中链接Ajax调用

贲铭
2023-03-14
问题内容

我想在一个链中进行多个Ajax调用。但我也想在每次通话后按摩数据,然后再进行下一次通话。最后,当 所有 调用成功时,我想运行其他代码。

我正在为我的Ajax调用使用Angular $ http服务,并坚持这一点。

可能吗?


问题答案:

是的,由于AngularJS的$http服务是围绕PromiseAPI构建的,因此可以非常优雅地对其进行处理。基本上,对$http方法的调用会返回一个Promise,您可以使用该then方法非常轻松地链接Promise
。这是一个例子:

$http.get('http://host.com/first')
   .then(function(result){
    //post-process results and return
    return myPostProcess1(result.data); 
   })
   .then(function(resultOfPostProcessing){
    return $http.get('http://host.com/second'); 
   })
   .then(function(result){
    //post-process results of the second call and return
    return myPostProcess2(result.data); 
   })
   .then(function(result){
      //do something where the last call finished
   });

您也可以将后处理和下一个$http功能组合在一起,这完全取决于谁对结果感兴趣。

$http.get('http://host.com/first')
   .then(function(result){
    //post-process results and return promise from the next call
    myPostProcess1(result.data); 
    return $http.get('http://host.com/second'); 
   })
   .then(function(secondCallResult){
     //do something where the second (and the last) call finished
   });


 类似资料:
  • 问题内容: 可以在Angularjs中使用锚链接吗? 即: 谢谢 问题答案: 看来有几种方法可以做到这一点。 选项1:本机角度 Angular提供了一项服务,但文档严重缺乏,我无法使其正常工作。 请访问http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by- id.html, 以获取有关的一些见解。 选项2:自定义指令/本

  • 是否可以使用Angularjs锚链接? 即: 非常感谢。

  • 问题内容: 我需要发出一系列N ajax请求而不锁定浏览器,并且想要使用jquery延迟对象来完成此操作。 这是一个具有三个请求的简化示例,但是我的程序可能需要排队100个以上(请注意,这不是确切的用例,实际代码的确需要在执行下一个步骤之前确保步骤(N-1)的成功步): 这是写入控制台的内容(所有请求都是并行进行的,响应时间与预期的每个国家/地区的数据大小成正比: 我怎样才能让延期的对象为我排队呢

  • 问题内容: 我是刚接触Angular的人,在拨打Ajax电话后被卡住了。注入DOM后,如何呈现/编译html内容,以便仍可以使用AngularJs函数。 由于后端的设置方式,我必须通过ajax($ http)获取内容。我正在制作没有jQuery的应用。我尝试了$ compile和$ apply,但是没有用。我在这里想念什么。 我在http://jsfiddle.net/rexonms/RB7FQ/

  • 我调用了多个ajax调用,但代码只在所有ajax调用执行之后才到达API。 JavaScript: AppFactory API 链接工作很好,但我需要运行两个独立,我真的想知道发生了什么。 谢谢!!!

  • 下面的问题-我必须多次调用ajax函数,当所有函数完成后,将所有结果放入数组。我想到了这个: 在这里小提琴:http://jsfiddle.net/Fkd9n/ 一切似乎都很正常,“console.log(data)”用响应文本写出对象,但“console.log(val.name)”总是“未定义”。那么,一旦所有调用完成,如何将所有结果合并到一个数组中呢? 谢谢你!