Javascript 角度RXJS,返回前完成可观察

Javascript 角度RXJS,返回前完成可观察,javascript,angular,rxjs,Javascript,Angular,Rxjs,我想知道如何在不使用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) => {

我想知道如何在不使用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;
}

您无法从订阅中返回。您必须返回一个可观察的
。然后,堆栈上更高的函数将订阅此可观察值

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

getFirstQueue():可观察{
if(this.activeQueue){
返回(this.activeQueue);
}
返回this.http.get(this.createUrl(`some_resource`)).pipe(
点击((someVar:any)=>{
this.insideVar=someVar;
})
);
}

不可能从异步回调转到同步上下文。为此,您需要使用
async/await
,但是如果您查看反编译的代码,
async/await
只是承诺之上的一个语法糖,所以它看起来只是从async到sync的一个函数,您想要一个返回asynchronus值的synchronus函数吗?从外部世界的角度来看,这似乎没有得到充分利用。您可以通过函数返回一个可观察的。调用者现在知道它的异步性,或者使用它作为可观察对象,或者订阅它并发出副作用,或者将值推入变量。“我希望你去问Aaron他的假期是什么时候,但我希望你现在就在这里给我答案。”。本质上,当您想要同步返回只能异步获取的内容时,这就是您要问的问题。它就是不起作用。对不起,返回时它应该是(this.insideVar)