Angularjs: $resource随着$http调用而改变
Angularjs: $resource chaning with a $http call
如何比较这些不同调用的结果?url和水果列表存储在不同的json文件中,在我将它们作为承诺发送之前,我会比较它们。他们应该彼此等待,并在一个共同的承诺中实现。
angular.module('myApp', ['ngResource'])
.controller('MainCtrl', function($scope, $http, $resource) {
var list = {};
$http.get('images.json').then(function(response) {
response.data.objects.forEach(function(images) {
list[images.id] = images.url;
});
});
$resource('fruits.json').get().$promise.then(function(response) {
var list = {
1: 'badUrlExampleForApple',
2: 'badUrlExampleForOrange',
3: 'badUrlExampleForPineapple'
}
response.objects.forEach(function(product) {
if (list[product.id]) {
console.log(product.name + ': ' + list[product.id]);
}
});
});
});
我知道这有点奇怪,但我必须这样做。
Plunker示例:http://plnkr.co/edit/ICwvYI?p=preview
任何帮助都将非常感激!
您使用$q.all
来获得一个承诺,其.then
将它们都解开:
var images = $http.get('images.json');
var fruits = $resource('fruits.json').get().$promise;
$q.all([images,fruits]).then(function(results){
var images = results[0];
var fruits = results[1];
// access to both here, you can compare anything you want
});
$q.all
指南说:
将多个承诺合并为一个承诺,当所有的输入承诺都被解决时,这个承诺才会被解决。
在其他承诺库中,如Bluebird和ES6承诺,该功能可能是Promise.all
,在原来的Q中是Q.all
。
相关文章:
- 当数据库中的某些内容发生变化时调用HTTP方法Meteor.js
- AngularJs.调用$http.success中的jQuery函数
- 调用 http url 有效,但 Https 不起作用
- AngularJs:在内部调用$http或$resource时,让方法同步返回
- 对于Chrome扩展程序,从https站点调用http站点时出现错误
- 调用 HTTP get 方法以使用 angular JS 在下拉列表中填充结果
- 当列表长度未知时按顺序调用 http.get
- 调用$http以响应另一个HTTP - Angular JS
- 从https调用http时拒绝访问
- 有目的地调用$http Post Request中的错误
- 如何从其他控制器调用$http.post
- AngularJs调用$http内联方法
- 如何调用HTTP请求使用Request -promise.js与许多url
- AngularJS -无法使用factory调用http服务
- 在https:// Page中调用http:// url
- 如何调用$http在angularJS顺序?但是我需要根据第一个$http的响应调用它第二个$http
- 多少次我必须调用http模块
- Django Angularjs如何使用特定的Id调用Http请求
- 在angularjs中调用http (RESTFUL WebAPI)的正确方法
- Angular.js从控制器外部调用$http.get