我想在一个链中进行多个Ajax调用。但是我也想在每次呼叫之后按下数据,然后进行下一个呼叫。最后,当所有调用成功时,我想运行一些其他代码。
我使用Angular $ http服务为我的Ajax调用,并希望坚持。
可能吗?
是的,这是由AngularJS处理非常优雅,因为它的$ http服务是围绕PromiseAPI构建的。基本上,对$ http方法的调用返回一个promise,你可以通过使用then方法很容易地链接promises。这里是一个例子:
$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.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 });