来自两个承诺的混合数据
Mixed data from two promises
我有 2 项服务 return 2 项承诺,第一项服务 return 对象列表,第二项服务 return 基于 id 的每个对象的详细信息。所以我需要为从 service1
编辑 return 的每个对象调用 service2
。
加载的数据将保存在一个数组中;
这是我实现的方法,但不起作用
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););
}
此解决方案无效。在我仍然有没有细节的对象数组之后。
试试这个代码:
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)
}
我有 2 项服务 return 2 项承诺,第一项服务 return 对象列表,第二项服务 return 基于 id 的每个对象的详细信息。所以我需要为从 service1
编辑 return 的每个对象调用 service2
。
加载的数据将保存在一个数组中;
这是我实现的方法,但不起作用
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););
}
此解决方案无效。在我仍然有没有细节的对象数组之后。
试试这个代码:
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)
}