angular.foreach 解析嵌套承诺
angular.forEach Resolving Nested Promises
我必须在检索数据集合后进行顺序 AJAX 调用。我在解决嵌套承诺时遇到问题。
基本上,我需要使用属性 ActionItems
扩展我的第一个集合中返回的每个对象,并使用 promise 设置它的值,然后解析集合中的每个承诺。
任何帮助将不胜感激。
厂
$http.get(urlBase + 'Project?$expand=Plant,CreatedBy,ModifiedBy,Plant/Contacts').then(function(success){
var contents = {};
contents = success.data.d.results;
return contents;
})
.then(function(contents){
var contentPromises = [];
angular.forEach(contents, function(content) {
contentPromises.push(
$http.get(urlBase + "ActionItems?$filter=ProjectId eq " + content.Id ).then(function(success){
content['ActionItems'] = success.data.d.results;
})
);
});
return $q.all(contentPromises).then(function() {
return contents;
});
});
电流输出未定义
事实证明这种方法有效,但取回数据的关键是返回它......
//Forgot the return below...
return $http.get(urlBase + 'Project?$expand=Plant,CreatedBy,ModifiedBy,Plant/Contacts').then(function(success){
var contents = {};
contents = success.data.d.results;
return contents;
})
.then(function(contents){
var contentPromises = [];
angular.forEach(contents, function(content) {
contentPromises.push(
$http.get(urlBase + "ActionItems?$filter=ProjectId eq " + content.Id ).then(function(success){
content['ActionItems'] = success.data.d.results;
})
);
});
return $q.all(contentPromises).then(function() {
return contents;
});
});
感谢所有帮助过的人。
您的问题在于$http.get(...).then()
部分。
.then
的文档告诉我们"此方法返回一个新的承诺,该承诺通过 successCallback, errorCallback 的返回值解析或拒绝"。因此,.then
返回的承诺与$http.get
返回的承诺不同。您有责任解决或拒绝它(通过返回)!.then
返回的承诺是被推到contentPromises
的承诺。
因此,您需要这样的东西:
angular.forEach(contents, function(content) {
contentPromises.push(
$http.get(urlBase + "ActionItems?$filter=ProjectId eq " + content.Id ).then(function(success){
content['ActionItems'] = success.data.d.results;
return success;
})
);
});
您最好也实施errorCallback
。
相关文章:
- 嵌套承诺会产生类似的效果
- 如何展平嵌套承诺依赖项
- 嵌套承诺
- 转换嵌套'对于'循环成一个承诺,为了一个承诺?嵌套承诺
- 嵌套承诺与q-io
- 如何将嵌套承诺与Q连锁?我可以'Don’我不能让它们按正确的顺序运行
- 在嵌套承诺链中重新引发异常
- 此代码中嵌套承诺的目的是什么
- 嵌套承诺执行不同步
- AngularJs $q.all 不会用混合的嵌套承诺来解决
- 使用模拟工厂在茉莉花中测试嵌套承诺
- angular.foreach 解析嵌套承诺
- 如何避免用$q嵌套承诺
- 如何返回嵌套承诺的结果
- Keystone.js嵌套承诺 -> foreach -> 列表查找范围问题
- 在 node.js 中返回延迟嵌套承诺
- 在 javascript 中进行嵌套承诺调用
- 嵌套承诺被卡住
- 简化嵌套承诺和循环
- 优化嵌套承诺