元ネタ: async/await地獄
https://qiita.com/rana_kualu/items/e6c5c0e4f60b0d18799d
後ろにいくほど手戻りが多くなる
コードが悪い
- 原因
- 安易な直列化(元記事での主張)
- 対策
- 必要な直列関係の明確化と分割
- Promise の生成 と
await
のタイミングをずらす - 例:
Promise.all
,p = new Promise; .... await p
画面設計・機能設計が悪い
- 原因
- 1 機能/1 画面が担う担務が多い
- 対策
- 機能分割
- 例:
- 前: 商品データ取得+在庫データ取得 で画面生成
- 後: 商品データ取得で画面生成 + 在庫データ取得で画面修正
- 並列性は実行環境にまかせる(これがJSの王道)
インターフェース設計が悪い
- 原因
- インターフェースミスマッチによるAPIコール多発
- 対策
- サーバサイドのインターフェース変更
- 例: REST でなく GraphQL を使う