[Memo] Flowのcollect()とcollectLatest()どっち使う問題

ked4ma
Nov 27, 2020

--

今日のお題は掲題の通りです。
議論の元となったのはこちら。

StateFlow 使ってるサンプルの多くが collect使ってる」
「でも最新ほしいなら collectLates じゃないの??」
「どっち使うかはこいつらに渡すaction blockの性質とかで決まるの?どうなの?」

といったところでしょうか。

Adam Powell氏いわく、以下のようです。

上の画像内にあるリンク先はこちら

  • collectLeast はaction blockの実行中に次の値が来ると、その処理をcancelして次のaction blockを実行する
  • 明らかに必要ではないのにcollectLeast を利用するといらないoverheadが発生する
  • さらに、いい感じに値がemitされた場合、結果が得られるまで長時間かかる可能性がある(action block完了前にcancel、が何度も起こる)
  • ものによっては、↑のようになってしまうよりも、古い結果を流してしまうほうが状況に合うケースがある

確かにやりたいことだけを考えれば collectLeast ですが(実際議論の前半はcollectLeast優勢でした)、overhead等も考慮すると不要なcollectLeast は避けたほうがいいのかもしれないですね。

(ここまで考慮できるくらいKotlinに詳しくなりたい/月並)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response