如何将 http.get.("URL").subscribe 转换为 promise 以便我可以等待它?

How to convert an http.get.("URL").subscribe to a promise so that I can await it?

如何将 http.get.subscribe 转换为 await 以便在继续下一个代码之前等待它? 有问题的函数是这样的:

async ngOnInit() {
    await this.setupIngredients();

    console.log("this text should be displayed after FINISHED");
    otherCode();
    //....other code
}

我希望 otherCode()console.log("this text should be displayed after FINISHED");setupIngredients() 完成后执行。

我的 setupIngredients 函数是这样的:

setupIngredients() {
    this.indicatorDataService.http.get(this.baseGetUrl + "entity=ingredients&indicator=all").subscribe(res => {
        // do something with res


    });
}

我仍然不知道为什么它不能转换为正确的 Promise。我尝试用 toPromise 替换订阅,但仍然不起作用。

我通过将订阅包装到这样的 Promise 中解决了这个问题:

setupIngredients() {
    return new Promise(resolve => {
            this.indicatorDataService.http.get(this.baseGetUrl + "entity=ingredients&indicator=all").subscribe(res => {
            // do something with res
            resolve();
        });
    });
}