使用Angular解决嵌套的Promise和Observable问题

3

我在一个组件中使用路由解析(resolve),但是在resolve中,一个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()

1个回答

4

要么将其变成可观察对象,要么将其变成 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))
  );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接