質問編集履歴

2 説明みす

abot

abot score 18

2019/04/15 15:13  投稿

UniRxのSubscribeのネストのリファクタについて
最近UniRXを勉強している者です。
Subscribeのネストの際の書き方について、どなたかご教授いただけますと幸いです・・・。
・Fetchはサーバーとの通信です。
・PlayerとPlayerQuestはサーバー側でマージすることはできず、それぞれ取得する必要があります。
```
Player.Fetch()
   .Do(playerData => {
       setPlayerData(playerData);
   })
   .Do(playerData => {
       PlayerQuest.Fetch(playerData).Subscribe(playerQuestData =>{           
           setPlayerQuestData(playerQuestData);
           OpenWindow(playerData, playerQuestData);
       });
   })
   .Subscribe();
```
上記のような場合Subscribeをネストするのは良くない気がしていて、
Player.Fetch()とPlayerQuest.Fetch(p)をマージできればと考えているのですが良い書き方がなかなか思いつかないです。
Player.Fetch()とPlayerQuest.Fetch(playerData)をマージできればと考えているのですが良い書き方がなかなか思いつかないです。
また分けた場合のplayerData、playerQuestDataのOpenWindowへの渡し方がわかっていないです。
PlayerQuest.Fetch(p)をPlayer.Fetch().Subscribeの発火に混ぜると
PlayerQuest.Fetch(playerData)をPlayer.Fetch().Subscribeの発火に混ぜると
Do(playerData => {OpenWindow(playerData,playerQuestData);}にplayerQuestDataが使えなかったり。
OpenWindow(p);はPlayerQuest.Fetch(playerData)の後に起こってほしいため、
ネストするしか思いつかず現在の状態のように見た目もよろしくなくなってしまいます。
わかりにくいかもしれませんが、よろしくお願い致します。
  • C#

    12175 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8206 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Rx.NET

    7 questions

    Rx.NETは、リアクティブプログラミングが可能なライブラリの一つ。.NET Framework向けReactive Extensionsライブラリです。マイクロソフト社が初めてRxライブラリとして提供し、ここから多くの言語にRxが移植されるようになりました。

1 コードのミス

abot

abot score 18

2019/04/15 15:11  投稿

UniRxのSubscribeのネストのリファクタについて
最近UniRXを勉強している者です。
Subscribeのネストの際の書き方について、どなたかご教授いただけますと幸いです・・・。
・Fetchはサーバーとの通信です。
・PlayerとPlayerQuestはサーバー側でマージすることはできず、それぞれ取得する必要があります。
```
Player.Fetch()
   .Do(playerData => {
       setPlayerData(playerData);
   })
   .Do(playerData => {
       PlayerQuest.Fetch(playerData).Subscribe(playerQuestData =>           
       PlayerQuest.Fetch(playerData).Subscribe(playerQuestData =>{           
           setPlayerQuestData(playerQuestData);
           OpenWindow(playerData, playerQuestData);
       );
       });
   })
   .Subscribe();
```
上記のような場合Subscribeをネストするのは良くない気がしていて、
Player.Fetch()とPlayerQuest.Fetch(p)をマージできればと考えているのですが良い書き方がなかなか思いつかないです。
また分けた場合のplayerData、playerQuestDataのOpenWindowへの渡し方がわかっていないです。
PlayerQuest.Fetch(p)をPlayer.Fetch().Subscribeの発火に混ぜると
Do(playerData => {OpenWindow(playerData,playerQuestData);}にplayerQuestDataが使えなかったり。
OpenWindow(p);はPlayerQuest.Fetch(playerData)の後に起こってほしいため、
ネストするしか思いつかず現在の状態のように見た目もよろしくなくなってしまいます。
わかりにくいかもしれませんが、よろしくお願い致します。
  • C#

    12175 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8206 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Rx.NET

    7 questions

    Rx.NETは、リアクティブプログラミングが可能なライブラリの一つ。.NET Framework向けReactive Extensionsライブラリです。マイクロソフト社が初めてRxライブラリとして提供し、ここから多くの言語にRxが移植されるようになりました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る