Promiseでネストする問題について調べてた

技術・テクノロジー

github/fetch で(別にこれじゃなくてもいいのだが)fetch したデータを使ってさらに fetch するので、どうしてもネストするからどうしようと思っていて、調べていると

といった質問が出てきたりして大いに参考になった。自分が解決したときの方法は上のやつの2番目を使ったが、ちょっと微妙な感じがしていたのでもう少し今調べていたら「promise nest」で検索した結果の一番上にある Promise アンチパターン - くじら公園 という記事に

君は複数のPromiseをネストする:

loadSomething().then(function (something) {
  loadAnotherthing().then(function (another) {
    DoSomethingOnThem(something, another)
  })
})

君がこれをする理由は、両方の Promise の結果で何かをする必要があるからだ。 then() は一つ前の Promise の結果しかコールバックに渡せないのでここでチェインを用いることはできない。

だが、君がこうする本当の理由は君が all()メソッドを知らないからだ。

って書いてあって、「あーall()で解決するんか〜」となっている。まだコードは直していないので、時間があれば直す。ちゃんと JavaScript Promise の本 読めよ、って話だが。流し読みしかしてない。

以下、余談。

今日は気が向いて久々に昔書いてた個人プロジェクト?の JS 書いてたけどまず上記の Promise の問題が合ってそれを修正するのに一悶着、さらに React のバケツリレー問題?に対応するのに一悶着して、結局解決したけどやっぱりつらみがあるので Redux とか覚えろよ、という話になるけど難しそうで手を付けてないし、多分今後もなんかすごい必要に迫られる機会がないと手をつけないと思う。

あと、React Toolbox 使ってるけどグリッドとかデザインがカスタマイズしにくいとかでちょっと微妙かも?といった感じで Material-UI に移行しようかな、となってるけど面倒〜となっている。

今回自分がいじっているコードはテストとか Lint とかぜんぜんしてないけど、しっかりして書いていくと JS すごいおもしろいと思うし、やっぱり書いていきたいな〜みたいな雰囲気になってるけど Ruby とかサーバー周りを固めたほうがいいよな、って感じもあるし、ただ今後は研究とかでも多分使うであろう Python とかそれ周りのこともやらないと〜みたいになっているのであああ、という感じである。

何はともあれ、今日書いてたやつは作りかけで公開してないけど後悔しないままお蔵入りはちょっともったいないと思うので、いつか公開したい。いつか。