Javascript 如果返回带有promise对象的自定义映射数组,如何访问服务响应数据?

Javascript 如果返回带有promise对象的自定义映射数组,如何访问服务响应数据?,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,这是我的密码: 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 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);
};
函数myobject(名称,另一个数组){
this.name=name;this.anotherArray=anotherArray;
}
//$scope.myObjects是myObject的数组
功能pMap(名称、承诺){
this.name=name;
这就是承诺;
};
var getAllPromises=function(){
var承诺=[];
角度.forEach($scope.myobjects,function(myobject){
urlPath=+myobject.name;
var promise=$http({
url:urlPath,
方法:“获取”
});
promises.push(新的pMap(myobject.name,promise));
});
返回$q.all(承诺);
};
现在,当我在一个单独的函数中使用接受如下承诺时。那么,我不确定如何访问上述服务返回的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>

                    });
                });
getAllPromises.then(函数(pData){
角速度(pData,功能(pMap){
var name=pMap.name;
var responseArray=promiseMap.->如何访问服务返回的json?
});
});
有什么办法吗?
一般来说,promise模式和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

您在哪里分配
j
?据我所知,你只是在制作一大堆
pMap
对象,其中
j
未定义的
为什么不直接返回
承诺
数组而不是新的承诺?我不明白你为什么要在数组中放置承诺映射。您可以通过它们的索引访问已解决的承诺,它们的索引将与您在这里的
myobjects
中推送它们时的索引相同?我们能看看代码吗?根据名称判断,它看起来像是一个数组,但是您希望将已解析的承诺分配给添加的myobject的另一个数组属性
myobject
。是的,你是对的。我只是添加了更多的上下文,这样问题就可以清楚了。现在请重新阅读描述,我已经解决了这个问题,只需让服务在json本身中返回一个名称,这样我就不必担心将$scope.myObjects.name映射到每个承诺。但是如果有人想这样做,这是一个长期存在的问题。另外,对于您的答案,让我们假设urlPath返回一堆JSON。promise[0]是否返回JSON数组本身?还是必须像承诺[0]一样。?我正在打印承诺[0],虽然json列表很大,但我在控制台中只看到[object object]。是的,无论承诺是否为数组,它都会按顺序返回已解析的承诺。您可以始终使用console.log(“my obj”,obj)、console.dir(obj)或普通调试来更好地查看返回的数据