我有一个控制器,需要检索两个单独的REST资源,将填充两个下拉列表.我想避免填充其中任何一个,直到两个$ http.get()调用都返回,这样下拉列表似乎同时填充,而不是一个接一个地插入.
是否可以捆绑$ http.get()调用并优雅地为两个返回的数组设置$ scope变量,而不必为两个场景编写状态逻辑,例如b之前的返回,b之前返回?
我正在尝试使用foreach中的顺序http请求更新进度条,这样可行,但是完全没有同步,进度条正在被http调用同步,我做错了什么?
angular.forEach(queue, function (item) {
if (item.uid) {
d.item = item;
$http({
url: BASE_URL + 'upp',
method: 'post',
data: d
}).then(function(res){
x++;
update_progress((x/queue_count)*100);
});
}
});
Run Code Online (Sandbox Code Playgroud)
我想在http返回完成时调用update_progress函数(200 OK),因此进度条正确显示实际进度.谢谢!
编辑:
我在调用*update_progress*函数之前尝试检查响应状态,但仍然无法按预期工作.我不知道在请求完成之前已经发送了200个:| 通过逻辑,res obj不应该是http请求的响应?我的意思是,如果它是200而不是错误代码,那不应该意味着请求已经完成了吗?
angular.forEach(queue, function (item) {
if (item.uid) {
d.item = item;
$http({
url: BASE_URL + 'upp',
method: 'post',
data: d
}).then(function(res){
if(res.status == 200) {
x++;
update_progress((x/queue_count)*100);
}
});
}
Run Code Online (Sandbox Code Playgroud)
阅读更多承诺atm,看看我是否可以按照@josh-strange的说法使其工作
编辑2:
所以承诺是这样做的方式,所有请求都是按顺序发送的,因此进度条按预期工作,这里是代码:
var promise = $q.all({});
// Had to init $q.all with an …Run Code Online (Sandbox Code Playgroud)