我有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););
}
此解决方案不起作用。在我仍然没有细节的对象数组之后。
答案 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)
}