最終更新: puriketu99 2011年10月30日(日) 02:00:39履歴
この手法を使うと、webアプリでajaxを用いてpostしたときの体感速度がクライアントアプリ並になる。
→callback関数に処理が返ってくるまでインターフェイスが反映がされず、遅い。
→callback関数に処理が返ってくるまでの待ち時間がなく、インターフェイスが瞬時に更新されるため、体感速度が爆速。
# ただし、更新の失敗が多い場合、callback関数の反映やエラーをユーザーが見逃していると、「反映したはずなのに更新されていない」ということがおこりがちなので、留意されたい。
- onclick="update(this);"などと設定
- update(this)で更新クエリを発行
- callback関数に処理が返ってくるのを待つ
- 更新クエリのcallback関数で更新内容をインターフェイスに反映
→callback関数に処理が返ってくるまでインターフェイスが反映がされず、遅い。
- onclick="update(this);"などと設定
- update(this)で更新クエリを発行する前に、インターフェイスを更新
- callback関数に処理が返ってくるのを待つ
- 更新に失敗していたら、callback関数でインターフェイス上で取り消し処理やエラー処理をする
→callback関数に処理が返ってくるまでの待ち時間がなく、インターフェイスが瞬時に更新されるため、体感速度が爆速。
# ただし、更新の失敗が多い場合、callback関数の反映やエラーをユーザーが見逃していると、「反映したはずなのに更新されていない」ということがおこりがちなので、留意されたい。
callback関数は、更新失敗時の処理(インターフェイスの巻き戻し&エラー通知)だけを書いて共通化することができるはずなので、たくさん書く必要はないと思われる。
従来のcallback関数による更新が一般的なのは、callback関数が便利すぎるためだと思う。「言語が思考を規定する」というサピアウォーフの仮説(参考)によるバイアスで発想が制限されているため、通信処理の更新はcallback関数でやるのが常態化しているのだと推測したりしなかったりしている。SNSとかゲームくらいのいい加減なシステムならガンガンつかっていいはず。特に、ゲームはレスポンス命なので、この技術を応用するとユーザー体験が圧倒的に向上するはず。
タグ
コメントをかく