如何将 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();
});
});
}
如何将 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();
});
});
}