尝试在初始化时将本地存储中的值作为参数传递给另一个函数 (Angular 11)

Trying to pass value from local storage as an argument to another function on initialization (Angular 11)

我正在从本地存储中获取一个值(我已将其放入 console.log,它按预期返回):

getBranchId(): Observable<any>
  {
    const branchId = localStorage['branch'];
    return of (branchId);
  }

我想在组件初始化时将上述函数返回的值设置为另一个函数的参数。我做了以下事情:

populateTable() {
    const id = this.branchService.getBranchId();
    id.subscribe(resp => {
      this.branchService.getBranchStock(resp).subscribe(
        (resp: any) => {
          // Do something with resp
        },
        (error: HttpErrorResponse) => {
          console.log(error);
        }
      )
    })
  }

然后我 运行 ngOnInit 中的“populateTable()”函数如下:

ngOnInit(): void {
    this.populateTable()
  }

上面returns一个POST415错误,命中了第二次订阅的http错误响应。但是,当发送任何其他值时,例如。 “45”如下:

this.subs.add(this.branchService.getBranchStock(45).subscribe(...)

一切正常。我假设问题是所有东西都同时 运行 在一起,并且 resp 获取的速度不够快,无法发送到第二个函数。这个问题有什么解决方法吗?

我的猜测是 API 不喜欢您发送的字符串。 localStorage 以字符串 (JSON) 格式存储内容。所以在获取的时候需要先转换这个:

getBranchId(): Observable<any> {
  const branchId = JSON.parse(localStorage.getItem('branch'));

  return of(branchId);
}