嵌套诺言和可观察的角度解析

时间:2019-07-22 10:11:44

标签: angular

我在一个组件中使用带有路由功能的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函数中缺少某些内容。 如何使用getVendorDetails()ngOnInit()回复到ActivatedRoute

1 个答案:

答案 0 :(得分:3)

要么使一个成为旁观者,要么使另一个成为诺言,并且始终返回:

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))
  );
}