在承诺中解决多重承诺

时间:2017-08-16 00:54:38

标签: javascript angularjs typescript promise

我正在编写一个服务方法,它将返回从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);
    });
});

1 个答案:

答案 0 :(得分:2)

_.forEach更改为.map(),并从回调中返回嵌套的承诺 这会给你一系列的承诺。

然后,您可以将该数组传递给Promise.all()以获得等待所有数组的承诺。

最后,您需要从承诺链中返回该承诺。