我有这样的场景。
// this is in myService.ts
public myFunction() {
return new Promise((resolve) => {
let click = Observable.fromEvent(window, "click");
this.myStream = click
.map(() => Observable.timer(10000))
.switch()
.subscribe(() => {
// show alert here
});
});
}
// this is in home.ts page
ngOnInit() {
this.myService.myFunction().then(() => {
//simulate click at start
let event = new MouseEvent("click", {bubbles: true});
this.renderer.invokeElementMethod(
this.simulateClick.nativeElement, "dispatchEvent", [event]);
});
}
我的问题是在哪里编写resolve()。我需要的是 Observable.fromEvent 成功,然后进行点击模拟。如果我写resolve(),假设在let click = Observable.fromEvent(window, "click");行下,那么首先模拟点击,然后是Observable.fromEvent。
最佳答案
对于 angular2 observables,简单干净的方法是将 Observable
转换为 Promise
并返回。
下载toPromise extension如果它不存在。
import 'rxjs/add/operator/toPromise';
public myFunction() {
return Observable.fromEvent(window, "click")
.map(() => Observable.timer(10000))
.switch()
.toPromise();
}
关于javascript - Observable 成功后如何解析() Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45500896/