我正在尝试在下面的代码中使用$ q.all。但我认为我误解了一些关键的想法,因为它没有像我预期的那样工作。如果有人能给我一些非常感激的指示。
问题出在$q.all(toSend.pie.slices).then()
:
var someData = {...};
var toSend = {
pie: {
slices: []
}
};
toSend.pie.slices = generatePieSlice(someData);
$q.all(toSend.pie.slices).then(function(data){
if(data) {
console.log(data); // this is undefined :(
//do something else
}
});
function generatePieSlice(data) {
var arr = [];
if(data) {
angular.forEach(data, function(resp_o, resp_n){
arr.push({
name: resp_o.display,
marketValue: resp_o.value,
percentage: resp_o.percentage,
key: resp_n
});
});
}
$q.all(arr).then(function(data) {
if(data) {
console.log(data); // this gives me with the correct data
return data;
}
});
}
答案 0 :(得分:-3)
感谢所有评论者和#39;救命。对于其他感兴趣的人来说,这是我最终的解决方案:)
var someData = {...};
var toSend = {
pie: {
slices: []
}
};
$q.all({
pieSlices: generatePieSlice(someData)
}).then(function(data){
if(data) {
toSend = {
pie: {
slices: data.pieSlices
}
};
// deferred.resolve(toSend) or something else :)
}
});
function generatePieSlice(response) {
var arr = [];
if(response) {
angular.forEach(data, function(resp_o, resp_n){
arr.push({
name: resp_o.display,
marketValue: resp_o.value,
percentage: resp_o.percentage,
key: resp_n
});
});
}
return arr;
}