ViBii / mitemiru

2 stars 0 forks source link

リポジトリへの問い合わせが中断できない問題 8.0h #330

Closed okjsc1118 closed 8 years ago

okjsc1118 commented 8 years ago

Overview

「メトリクスを見る」のページで、すべてのグラフが表示される前にプロジェクトの選択ボタンを押すと、前の処理がそのまま継続して実行され、その後に新たなプロジェクトのグラフが上書きされてしまう。 2015-12-01 18 32 09

Task

Viewの処理でグラフ描画前にSVG領域をリセットすればグラフの重複を解決できるが、それでは根本的な解決にはならないのでバックグラウンドの処理を修正して欲しいです。

実装方法案

まず, ajaxのkill処理に関してはいくつか案があったので, 以下に現状やってみたことについて記述します.

  1. abort()を利用する JSのメソッドであるabortを利用すると, 非同期処理を停止させることができます. これでいこうと思ったのですが, abortはあくまでフロントとサーバの接続を遮断するということであって, サーバ側までは制御できないようです. http://sutara79.hatenablog.com/entry/2014/02/16/000002
  2. プロジェクト選択ボタンの2重押下を防止する とりあえずこれしてます.
  3. 理想案 http://okwave.jp/qa/q6917925.html まあ, やりたいことはこのリンクの質問者と一緒です. ちょっと理想形に近づけたいと思ってます.

いい案あればコメントよろーしくおねしゃす.

PullRequestLink

341

yaginuuu commented 8 years ago

@ryoki1118 @sjc1209 @Altairzym 意見求ム

okjsc1118 commented 8 years ago

@yaginuuu

  1. abort()を利用する
  2. プロジェクト選択ボタンの2重押下を防止する

どっちもサーバのAjax処理止められないなら根本的な解決にはならんなぁ...。いずれの場合も、リポジトリへの問い合わせ処理が終わらない限りは他の機能も使えないんだよね?

ブラウザからサーバにAjax止める処理って書けそう?

Altairzym commented 8 years ago

@yaginuuu 理想案がいいと思う、2重押下を防止するも必要がある(多分実行し始まるとそのボタンを無効化する処理だよね)

Altairzym commented 8 years ago

@yaginuuu 因みにxhr.abort();方法は特定の問い合わせを停止させるか?それとも全て実行中の問い合わせを停止させる?

yaginuuu commented 8 years ago

@ryoki1118 まだ, かけてないっす. なんらかの動作をフロントで行った時にフラグをたてて、時間がかかりそうな処理のところでフラグを見てbreakするか判断する的なことをやってますが、うまくいかないっす。 結局フロントでサーバ側のフラグをいじるには実行中の非同期処理を待たなくてはいけないのでだめですね。

yaginuuu commented 8 years ago

@Altairzym abortは処理を遮断するだけですー。 特定の問い合わせ関しててですー。

Altairzym commented 8 years ago

@yaginuuu なるほど、了解、じゃあ問題ないっす!

sjc1209 commented 8 years ago

確認しました。OKです