如何在Observable成功后解析()Promise

时间:2017-08-04 07:40:49

标签: javascript typescript ionic2 angular-promise angular2-observables

我有这种情况。

// 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(),请在行下单击= Observable.fromEvent(窗口,“单击”); 然后先模拟点击,然后是Observable.fromEvent。

1 个答案:

答案 0 :(得分:2)

对于angular2 observables,简单而干净的方法是将Observable转换为Promise并返回。

如果不存在,请下载toPromise extension

import 'rxjs/add/operator/toPromise';

public myFunction() {
    return Observable.fromEvent(window, "click")
        .map(() => Observable.timer(10000))
        .switch()
        .toPromise();
}