来自两个承诺的混合数据

时间:2017-09-13 16:40:23

标签: angular typescript angular-promise

我有2个服务返回2个promises,第一个服务返回一个对象列表,第二个服务返回基于id的每个对象的详细信息。所以我需要为service2返回的每个对象调用service1。 加载的数据将保存在数组中;

这是我实施但不起作用的方式

objects: object[];

service1.then(res => 
     objects = res.data;
     objects.forEach( obj =>
         loadService2(objId,(dtObj) => {obj = dtObj})
     )
);

loadService2(obj: object, callback: (detailsObject: DtlObject) => void){
    service2.then(res => callback(res.data););
}

此解决方案不起作用。在我仍然没有细节的对象数组之后。

1 个答案:

答案 0 :(得分:1)

试试这段代码:

objects: object[];

service1.then(res => 
 objects = res.data;
 objects.forEach( obj =>
     loadService2(objId).then((dtObj) => {
        obj = dtObj
   })
 )
);

 loadService2(obj: object) => void){
 return service2(obj)
}

如果这不起作用

service1.then(res => 
 objects = res.data;
 let promiseses = objects.map( obj =>
     return loadService2(obj.objId));

Promise.all(promises).then(data => {
  objects = data;
 })
);

 loadService2(obj: object) {
    return service2(obj)
 }