具有嵌套 promise 和可观察性的 Angular 解析

标签 angular

我在一个组件中使用带有路由的解析,但在解析中,一个 HTTP 调用依赖于另一个 Promise 调用。

resolve(){
  return this.storage.getUser().then( user => {
    this.getVendorDetails(user.login);
  });
}

getVendorDetails(loginId) {
  return this.http.get('http://localhost:8080/user/getVendor/' + loginId);
}

在组件中,当我尝试从 ActivatedRoute 获取数据时

ngOnInit() {
  this.activatedRoute.data.subscribe( data => {
    console.log(data);
  });
}

我得到 undefined。也许我在 resolve 函数中遗漏了一些东西。 如何使用 ActivatedRoutegetVendorDetails() 响应发送到 ngOnInit()

最佳答案

要么让一个成为 observbe,要么让另一个成为 promise 并始终返回这个:

resolve() {
  return this.storage.getUser().then(user => this.getVendorDetails(user.login).toPromise());
}

resolve() {
  return from(this.storage.getUser()).pipe(
    switchMap((user) => this.getVendorDetails(user.login))
  );
}

关于具有嵌套 promise 和可观察性的 Angular 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143724/

相关文章:

javascript - 如何在一个 observable 中保持可观察链在 http 错误之后继续运行

java - 如何在 Java EE Spring Boot Web 应用程序中使用 Angular 2 减少构建时间

javascript - Sidenav 抛出异常 : Error during evaluation of "onShown"

angular - window.scroll 不适用于 Angular 11 和 Material

javascript - 我在这个 Angular HTTP 请求中做错了什么?

Angular 2 Observable.forkJoin this._subscribe 不是 [null] 中的函数

angular - 使用 Visual Studio 在 Mac 上创建一个新的 Angular 项目

Angular ,在获得 promise 值后无法访问另一个函数中的值

javascript - 如何创建一个包含另一个 Angular Cli 的 Angular Cli 应用程序?

ruby-on-rails - 如何在 Nginx 上部署 Angular Plus Rails?