我正在写一个服务方法,该方法将返回从API获取对象的承诺。 返回的对象带有一系列链接,也可以从API获取子对象。 这里的关键是,在所有子对象都已检索并添加到父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楼 票数:2 已采纳

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

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

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

  ask by Steve Wash translate from so

未解决问题?本站智能推荐:

1回复

如何解决打字稿中的多重承诺

我有一项服务,该服务首先通过$ http调用从服务器加载配置文件,然后在成功回调中读取文件内容,该内容实际上包含要从服务器加载的文件列表。 因此,我再次调用服务器以加载所有其他文件。 TypeScript中有什么方法可以返回一个仅在所有promise得到解决时才被调用的promise。
1回复

兑现诺言,兑现诺言?

我有点困惑如何做到这一点。 这是我所拥有的: 或者应该是在ObjectiveDetailService.getObjectiveDetailsExam之前return的内容: 两者实际上似乎都可以正常工作,并且随着调用快速执行,我看不到哪个是正确的。 有人可以建议我在解析
2回复

如何做条件承诺链

我正在学习Promise / TypeScript / Angular,我想有条件地链接Promise。 这是我方法的实际状态: 我对C#的异步/等待很熟悉,这两个都不会对条件链接产生任何问题,但是我在用promises实现相同的问题上遇到了麻烦。 将.the不仅放置在诺言创
2回复

javascript / angular $ promise并作为独立函数捕获

所以我有多个函数都使用大约相同的$ promise.then-> catch链。 我想知道如何将其作为一个单独的函数来减少重复代码。 使用“几乎”相同链接的两个函数的示例: neDynamicMapService function checkGeoDataSer
2回复

如何仅调用循环中的最后一个承诺

我是promise的新手,这里的任何人都可以帮忙promise是随机解决的,当全循环执行时如何从循环中解决最后的promise 这里假设this.selectedValues有4个值,但是有的时候它只更新三个,有的时候它更新所有值(4),这是promise的问题
2回复

解决承诺中的承诺

考虑示例: let promiseA = new Promise((res, rej) => res(10)); let promiseB = new Promise((res, rej) => res(promiseA)) promiseB.then((resolv
2回复

编写一个期望无极但如果不满足条件就什么也不返回的打字稿方法的正确方法是什么?

好的,可以说我有如下方法: Typescript发出警告,因为return不会返回任何东西,但是那是因为我希望如果不满足条件(缺少参数或已经在运行或执行任何操作),它不会运行。 我应该创建一个承诺并立即归还吗? 我应该忽略该错误吗? 更改退货类型?
1回复

返回承诺并在其中解决多个等待

所以我必须创建一个函数: 现在,在generateData() : 我无法理解如何将它包装在里面: 这样我就可以通过调用await this.someservice.generateData();获取数据await this.someservice.generateData(); 当我将