Javascript 在AngularJS中使用不同参数对同一API函数进行多个异步调用

Javascript 在AngularJS中使用不同参数对同一API函数进行多个异步调用,javascript,angularjs,asynchronous,Javascript,Angularjs,Asynchronous,考虑对同一API方法的3个调用。它们相互独立。我如何异步调用它们,以便在它们中的任何一个完成后,我可以对响应进行处理,而不是等待其他响应完成?正在寻找类似于C中可用的System.Threading.Tasks的东西# 你的代码将无法工作。你的变量是promise1,promise2,promise3。但在解决问题时,您只使用了promise.resolve 其次,你应该用它来代替成功。如下 $http.get(url).then(function(response){ //do som

考虑对同一API方法的3个调用。它们相互独立。我如何异步调用它们,以便在它们中的任何一个完成后,我可以对响应进行处理,而不是等待其他响应完成?正在寻找类似于C中可用的System.Threading.Tasks的东西#


你的代码将无法工作。你的变量是promise1,promise2,promise3。但在解决问题时,您只使用了promise.resolve

其次,你应该用它来代替成功。如下

$http.get(url).then(function(response){
    //do something with the response.
 });

你的代码将无法工作。你的变量是promise1,promise2,promise3。但在解决问题时,您只使用了promise.resolve

其次,你应该用它来代替成功。如下

$http.get(url).then(function(response){
    //do something with the response.
 });

使用angular的
$q.race()
表示第一个完成的,使用
$q.all()
表示所有完成的

您还可以使用函数和映射请求数组来简化请求

还请注意,
success()
已被弃用


比如:

const getCityData = (city) => {
   return $http.get(`/api/city/${city}`).then(res => res.data)
}

const requestPromises = ['boston','newyork','chicago'].map(getCityData);

$q.race(requestPromises).then(data => console.log('First one completed ', data));

$q.all(requestPromises).then(dataArray => console.log('All completed', dataArray ))
                       .catch(err => console.log('Something failed', err)
确保将
$q
服务注入运行此操作的控制器或服务中


对于第一个完成的,使用angular的
$q.race()
,对于所有完成的,使用
$q.all()

您还可以使用函数和映射请求数组来简化请求

还请注意,
success()
已被弃用


比如:

const getCityData = (city) => {
   return $http.get(`/api/city/${city}`).then(res => res.data)
}

const requestPromises = ['boston','newyork','chicago'].map(getCityData);

$q.race(requestPromises).then(data => console.log('First one completed ', data));

$q.all(requestPromises).then(dataArray => console.log('All completed', dataArray ))
                       .catch(err => console.log('Something failed', err)
确保将
$q
服务注入运行此操作的控制器或服务中


我非常肯定您提供的代码会做到这一点。如果后端支持,AngularJS框架将并行执行这些操作。顺便说一句,
.success
方法已经成功了。我很确定您提供的代码会做到这一点。如果后端支持,AngularJS框架将并行执行这些操作。顺便说一句,
.success
方法已被禁用。