![](/img/trans.png)
[英]Angular 5, rxjs- wait for observable to finish only if it is in a middle of a run before running another process
[英]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.