【发布时间】:2020-08-29 12:38:39
【问题描述】:
注意这是Angular template binding with Observable async pipe issue的简化问题
模板:
<div>{{foo()$ | async}}</div>
源代码:
import { Component } from "@angular/core";
import { BehaviorSubject, of, Observable } from "rxjs";
import { tap, delay, map, switchMap, concatMap } from "rxjs/operators";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
private index = 0;
foo$(): Observable<any> {
console.log("aaa")
return of("Delayed");
}
}
上面的代码按预期工作:
但是,如果我将.pipe(delay(1)) 添加到foo$():
foo$(): Observable<any> {
return of("Delayed").pipe(delay(1));
}
它不起作用并在控制台日志中保留“aaa”。
【问题讨论】:
-
我真的没有明白你的意思。在我看来,它按预期工作。
console.log会在函数调用之后立即执行,无论您在返回的 observable 中有什么(顺便说一句,我假设您在第二个示例中忘记了它,即使用pipe(delay))的示例)。
标签: angular rxjs rxjs6 rxjs-observables