繁体   English   中英

Angular RXJS,在返回前完成可观察

[英]Angular RXJS, finish observable before return

我想知道如何在不使用 async/await 的情况下“等待”完成 observable 然后返回该值

// import {Observable, of} from 'rxjs';
getFirstQueue() {
  if (this.insideVar) {
    return of(this.insideVar);
  }
  this.http.get(this.createUrl(`some_resource`)).subscribe((someVar: any) => {
    this.insideVar = someVar;
  });
  return this.insideVar;
}

您无法从订阅中返回。 你必须返回一个Observable 堆栈上方的函数将订阅此 observable。

在返回之前,您可以使用tap来执行您当前在订阅正文中执行的相同副作用。

getFirstQueue(): Observable<any> {
  if (this.activeQueue) {
    return of(this.activeQueue);
  }
  return this.http.get(this.createUrl(`some_resource`)).pipe(
    tap((someVar: any) => {
      this.insideVar = someVar;
    })
  );
}

从异步回调到同步上下文是不可能的。 为此,您需要使用async/await ,但是如果您查看反编译代码, async/await只是 Promise 之上的语法糖,因此它看起来只是从 async 到 sync

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM