私が取り組んでいるアプリケーションは非常に重い計算を実行します。現在、未確定のスピナーを使用しています。私はこれから気が狂います、そして、ユーザーがそれでさらにいらいらすることを想像することができます。確定的な指標があると考えましたが、計算にどのくらい時間がかかるのかわかりません。
そこで、キャンセルボタンを設けることを考えました。これはユーザーにとって素晴らしい解決策でしょうか?
(アプリケーションが計算しているとき、ユーザーが画面上で実行できることは何もありません)
これに対する左のフィールドの答えは、計算プロセスを非同期にすることです。言い換えれば、ユーザーがスタックする時間を知らないページにユーザーを閉じ込めないでください。代わりに、「送信」インスタンスに非同期バックラウンドプロセスを設定します。これにより、非同期プロセスの最後に、完了時にユーザーに通知されます。
基本的なユーザーフロー:
「死んだ」ページに座っているユーザーはもういません。
もう1つのことは、計算をリファクタリングして、期間内に決定的で予測可能なものにすることです。もちろん、より多くの時間と回帰テストが必要になります。ただし、非同期のアイデアは、ユーザーにただそこに座らせることを強制することから少なくともかなり離れています。 :)
唯一の解決策として、私はキャンセルボタンのファンではありません-人々にそれを押すように勧めるだけで、おそらく彼らをもっと焦らせてしまうでしょう(スツールの白い象を考えないでください...くそっ!)。計算が実際に送信されるまでにかかる時間について警告があると想定しています(警告-計算には1時間以上かかることがあります(3日など)。ウィンドウを閉じないでください。ただし、新しいウィンドウを開いて、チャンクしながらゆっくりとブラウジングします。)
別のページで計算を実行できますか?
不完全なインジケーターに関して-計算はまったく順序付けられていますか(または順序付けできますか?)ユーザーに計算の一部を表示して、somethingが発生していることをユーザーに知らせることができます。ソフトウェアのインストールと同様に、何千ものライブラリがフラッシュするので、ユーザーは必ずしも何をしているのかはわかりませんが、何かが起こっていることを知っています。注文した場合、どれくらいの時間がかかるかについて、彼らは球場に立つことができるかもしれません。
私が最初に思ったのは、あなたが、ユーザーがあなたよりも煩わしいであることを想像できると言っているという事実でした。これは、移動して理解する絶好の機会のようです。そのアウト、フィールドで:-)
誰かが「キャンセルボタン」を押したがる理由はわかりません。あなたによれば、彼らができることは他にはあまりないからです。ただし、ある程度の制御が追加されていますが、どのような目的に使用しますか?それがその日の彼の目標だからです。
とにかく、ifユーザーは他に何でもできます。ビジュアルキューに入れることを検討するか、何か、たとえば、ユーザーがその計算の進行状況をチェックして確認できる間、ユーザーは何か他のことを続けることができます(たとえば、上隅)。
あなたがすべきことは、そのアクションを実行すると計算に非常に長い時間がかかり、その間他のことは何もできないことをユーザーに警告することです。
また、計算が実行される可能性のある期間の推定値を提示して、推定されたカウントダウンをスピナーの下に配置することもできます。しかし、結局のところ、それが続く時間を把握することは常により定性的です。考慮する必要があることの1つは、単純に移動する必要があるという事実です。遅いかもしれませんが、移動しない方が良い場合があります。
出典:
Carnegie MellonのSoftware Engineering Insituteからの「 ソフトウェアアーキテクチャによるCANCELコマンドのサポート 」というテクニカルレポートをお読みになることをお勧めします。ソフトウェアで実装します。あなたが説明した状況でのキャンセルに対するユーザーのニーズをサポートする調査へのレポートにも引用があります。