如果我返回一个以 promise 作为对象的自定义映射数组,我该如何访问服务响应数据?
How do I access the service response data if I am returning an array of custom map with promise as an object?
这是我的代码:
function myobject(name, anotherArray){
this.name = name; this.anotherArray = anotherArray;
}
//$scope.myObjects is an array of myObject
function pMap(name, promise){
this.name= name;
this.promise = promise;
};
var getAllPromises = function(){
var promises = [];
angular.forEach($scope.myobjects, function(myobject) {
urlPath = <someurl>+myobject.name;
var promise = $http({
url : urlPath,
method: 'GET'
});
promises.push(new pMap(myobject.name, promise));
});
return $q.all(promises);
};
现在,当我使用 .then 在单独的函数中接受如下每个承诺时,我不确定如何访问上述服务返回的 json?
getAllPromises.then(function(pData){
angular.forEach(pData, function(pMap){
var name = pMap.name;
var responseArray = promiseMap.<?> --> how do I access the json returned by the service here?
<I need to assign $scope.myobjects.anotherArray to data returned by the promise but this has to be done using the name attribute of each myobject>
});
});
任何想法如何做到这一点?
承诺模式的新手和 angularjs 一般
你可以这样做:
var promises;
angular.forEach($scope.myobjects, function(myobject) {
var promise = $http({
url : urlPath,
method: 'GET'
});
promises.push(promise);
});
$q.all(promises).then(function(resolvedPromises) {
var firstPushedPromise = resolvedPromises[0];
//var xPushedPromise = resolvedPromises[x];
}
resolvedPromises
在这里是一个数组,索引将与您将它们推入的索引相同。您可以通过它们的索引访问每个其他承诺。
如果你不打算使用 myobject
,我不确定你为什么要循环 $scope.myobjects
。
这是我的代码:
function myobject(name, anotherArray){
this.name = name; this.anotherArray = anotherArray;
}
//$scope.myObjects is an array of myObject
function pMap(name, promise){
this.name= name;
this.promise = promise;
};
var getAllPromises = function(){
var promises = [];
angular.forEach($scope.myobjects, function(myobject) {
urlPath = <someurl>+myobject.name;
var promise = $http({
url : urlPath,
method: 'GET'
});
promises.push(new pMap(myobject.name, promise));
});
return $q.all(promises);
};
现在,当我使用 .then 在单独的函数中接受如下每个承诺时,我不确定如何访问上述服务返回的 json?
getAllPromises.then(function(pData){
angular.forEach(pData, function(pMap){
var name = pMap.name;
var responseArray = promiseMap.<?> --> how do I access the json returned by the service here?
<I need to assign $scope.myobjects.anotherArray to data returned by the promise but this has to be done using the name attribute of each myobject>
});
});
任何想法如何做到这一点? 承诺模式的新手和 angularjs 一般
你可以这样做:
var promises;
angular.forEach($scope.myobjects, function(myobject) {
var promise = $http({
url : urlPath,
method: 'GET'
});
promises.push(promise);
});
$q.all(promises).then(function(resolvedPromises) {
var firstPushedPromise = resolvedPromises[0];
//var xPushedPromise = resolvedPromises[x];
}
resolvedPromises
在这里是一个数组,索引将与您将它们推入的索引相同。您可以通过它们的索引访问每个其他承诺。
如果你不打算使用 myobject
,我不确定你为什么要循环 $scope.myobjects
。