###前提・実現したいこと
現在SNSアプリを作っています。
その中の実装で、「いいね」、「フォロー」を実装する際についての質問です。
「フォローなどの表面では連打できるボタンだけど、裏側では時間のかかる処理する場合どういった実装になっているのでしょうか?」
###発生している問題・エラーメッセージ
現在、フォローの場合だと、
フォローボタンを押すと、「フォロー中」、「フォロー」に切り替わります。
ボタンの表示はBool文で、オン、オフで切り替わっています。
裏側では、
ユーザーA、がユーザーBをフォローした時、
mBaasのデータストアの「ralation」というクラスに
followed: ユーザーA, follower: ユーザーB
という情報が新しいレコードとして非同期で保存されます。
反対にフォローを外す場合は、該当するレコードを削除します。
そこで、
ボタンを繰り返し押した時、
裏側の非同期処理が終わっていないのに、
新しい処理が呼ばれて、
ボタンの状態と、データストアの情報が違う(同じ組み合わせの「ralation」のレコードができる)だったり、
エラーが起きることがあります。
原因としては、
ボタンおした時、
Bool == trueなら、
今はフォロー中だからフォロー解除で、
レコード削除(非同期処理) & Bool = false
Bool == falseなら、
今はフォローしてないから、
新たにレコード作成(非同期処理) & Bool = true
となってるのですが、
ここのところで、
非同期処理とBoolの整合性がとれていないからだと思います。
###試したこと
現在は、非同期処理中は、ボタンを押せないようしています。
ですが、「フォロー」、「いいね」は表面上は連打できる感じにしたいです。
自分なりの案としては、
案1, 非同期処理中に、またボタン押されたら、前の処理やめる。
案2, 画面を離れる際に、非同期処理をする。
みたいな形になるのかなーと思ってるんですが、、、
どの感じがいいのか?
###補足情報(言語/FW/ツール等のバージョンなど)
サーバーをmBaaSの、nifty mobile backend を使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。