0

私はこのシナリオを持っています。解決方法()観察可能な成功後の約束

// 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]); 
}); 
} 

私の質問は、決意()を書き込む場所です。私が必要とするのは、Observable.fromEventに成功した後、クリックシミュレーションを行うことです。私がresolve()を書くと、という行の下をクリック= Observable.fromEvent(ウィンドウ、 "クリック")しましょう。次に、クリックをシミュレートしてからObservable.fromEventを実行します。

答えて

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(); 
} 
+0

これは解決策ではありません。このイベントに登録する必要があります。 – djumerko

+0

なぜですか?それはすでにあなたのために1回購読しています。あなたは 'myFunction()。then'が必要なことをすることができます。 – Val

関連する問題