【问题标题】:Return value in function when service all is complete服务全部完成时函数中的返回值
【发布时间】:2020-06-14 19:17:51
【问题描述】:

我有一个要返回数组的函数。这个函数对我的后端进行服务调用,所以当我知道我的服务调用完成时,我想返回数组。

getList(id: number): MyArray[] {
    let temp: MyArray[] = [];
    this.service.getById(id).subscribe(
      singleId => {
        temp = temp.concat(singleId);
      },
      () => {},
      () => {
        this.myArray= temp;
        return temp;
      }
    );
  }

但是当我编译我的代码时,它仍然给我错误

声明类型既不是“void”也不是“any”的函数必须返回一个值。

如果我在subscribe 函数之外返回temp,它不会返回任何内容,因为服务调用实际上并未完成

【问题讨论】:

标签: angular typescript


【解决方案1】:

如果你想从getList返回数组,那么它必须是Observable,无论调用什么都会订阅返回的observable。

如果要执行操作,例如将结果推送到数组中,可以在管道中的 tap 运算符中执行此操作。

如果要返回要添加的数组,可以映射到该数组。

getList(id: number): Observable<MyArray[]> {
  return this.service.getById(id).pipe(
    tap(single => this.myArray.push(single)),
    map(() => this.myArray)
  );
}

这不是一个特别有用的函数,但它演示了如何从异步调用返回结果。

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2014-08-25
    相关资源
    最近更新 更多