一尘不染

在AngularJs中链接Ajax调用

angularjs

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

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

可能吗?


阅读 254

收藏
2020-07-04

共1个答案

一尘不染

是的,由于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
   });
2020-07-04