我正在编写一个服务方法,它将返回从API获取对象的承诺。该对象返回一个链接数组,以便从API获取子对象。这里的关键是我不希望解析外部promise,直到检索到所有子对象并将其添加到父MyType。以下是关闭我想要的,但我不知道如何获得等待子对象在返回之前得到解决的承诺。
private getRegistrationDetailsPromise(url: string): Promise<MyType> {
return new Promise<MyType>((resolve) => {
return this.dataService.GetMyType(url)
.then((myType: MyType) => {
_.forEach(myType.childReferences, function(childUrl) {
let child = this.dataService.GetChild(childUrl).then((child) -> {
myType.children.push(child);
};
};
return (x);
});
});
答案 0 :(得分:2)
将_.forEach
更改为.map()
,并从回调中返回嵌套的承诺
这会给你一系列的承诺。
然后,您可以将该数组传递给Promise.all()
以获得等待所有数组的承诺。
最后,您需要从承诺链中返回该承诺。