subscribe内の処理を待つ方法を知りたい
解決したいこと
メソッドAからメソッドBを呼び出し
メソッドB内でObservableを返すメソッドCから受け取った値を、返却値としてreturnしたい。
発生している問題・エラー
RxJsをきちんと理解しているといえないため、そもそもの考え方が誤っているかもしれません。
メソッドBではメソッドCをsubscribeしその中で値を受け取っている。
(Observableを返す場合はsubscribeが必要と思っています)
非同期処理のため、実際に値が来る前にメソッドAにreturnされてしまう。
値が来てからメソッドAにreturnするにはどのようにすればよいか。
該当するソースコード
// ―――――――――――――――――――――――――――――――――――――――――――――――
methodA(){
// methodBを実行し、この後の処理に使う値を取得
let data = this.methodB();
// 以下dataを使う処理が続く。。。。
}
// ―――――――――――――――――――――――――――――――――――――――――――――――
methodB(): Hoge{
// メソッドAにreturnするための変数hoge
let hoge_result: Hoge;
this.methodC().subscribe((hoge) => {
// この後に使用したいため代入
hoge_result = hoge;
// 返却する値の編集を行う
// hoge_result = 。。。。。。
})
// ここが先に実行されてしまう。。。。。
return hoge_result;
}
// ―――――――――――――――――――――――――――――――――――――――――――――――
methodC(): Observable<Hoge>{
// API実行処理があり、Hogeのレスポンスを返す。。。
return response;
}
// ―――――――――――――――――――――――――――――――――――――――――――――――
自分で試したこと
以下のページを参考にさせていただいておりました。
https://qiita.com/pg_yamaton/items/9d1622716625c6bc0781
調べたのですが、subscribeの中で処理をしていたり、
subscribe外で宣言した変数に入れるというのは見つかるのですが
subscribe外の処理が先にされてしまうことについての対策はわかりませんでした。
また、メソッドAとBにasyncをつけて、メソッドAで実行してみましたが、先にBの最後のreturnが行われる結果は変わらずでした。
お力添えよろしくお願いいたします。