この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

中止可能なアクション

アクションを中止可能とマークして、サーバへの送信キューに入っているときや、サーバからまだ返されていない場合に中止可能にすることができます。これは、キューにより新しい中止可能アクションがあるときにアクションを中止する場合に便利です。

1 つのトランザクションのためのアクションのセット (クリックコールバックなど) はまとめてサーバへの送信キューに入れられます。ユーザが別のボタンをクリックするなどして、別のトランザクションを開始した場合、すべての中止可能なアクションはキューから削除されます。中止されたアクションはサーバには送信されず、その状態は ABORTED に設定されます。

中止可能なアクションは、通常はサーバに送信されて実行されます (ただし、その後で中止可能なアクションがキューに追加されたときにサーバからまだ返されていない場合を除きます)。

一部のアクションがサーバに送信され、まだ返されていない場合、そのアクションは完了しますが、実行されるのは ABORTED 状態 (action.getState() === "ABORTED") に関連付けられたコールバックロジックのみです。これにより、コンポーネントは必要に応じてメッセージをログに記録するか、中止されたアクションがある場合はクリーンアップ処理を実行できます。

最新の中止可能アクションが以前の中止可能アクションと同一である必要はありません。必要なのは、最新のアクションが中止可能とマークされていることだけです。

メモ

アクションを中止可能としてマーク

サーバ側アクションを中止可能とマークするには、JavaScript で Action オブジェクトに対して setAbortable() メソッドを使用します。次に例を示します。

1swfobject.registerObject("clippy.codeblock-0", "9");var a = component.get("c.serverEcho");
2a.setAbortable();
3

必要に応じて、コールバックで中止されたアクションがあるかどうかを確認し、中止されたアクションをログに記録するなど、適切なアクションを実行できます。次に例を示します。

1swfobject.registerObject("clippy.codeblock-1", "9");a.setCallback(this, function(action) {
2    if (action.getState() === "SUCCESS") {
3        // Alert the user with the value returned from the server
4        alert("From server: " + action.getReturnValue());
5    }
6    else if (action.getState() === "ABORTED") {
7        alert("The action was aborted");
8    }
9    else { // something bad happened
10        alert("Action state: " + action.getState());
11    }
12});
13

急速な連続クリック

ナビゲーションメニューの各アクションからサーバへの要求が遅い場合を考えてみましょう。ユーザがナビゲーション項目を立て続けに何回もクリックして、後続のクリックの前にサーバから応答が戻らなかったとします。すべてのアクションが中止可能とマークされている場合、最後のクリックを除き、コールバックは一切コールされません。これにより、複数のサーバ応答を連続して表示したために発生する画面のちらつきがなくなり、ユーザの操作性が向上します。

段階的な読み込み

最初の項目セットを読み込み、最初のセットの表示が完了した後に後続のデータを読み込む、というようにデータの段階的な読み込みが必要になる場合があります。これを行うには、2 回目の一連のアクションを遅延させてコールし、Action オブジェクトの setParentAction() メソッドを使用して、2 回目のセットの各アクションを最初のセットのいずれかのアクションに関連付けます。これにより、ユーザが他の画面に移動した場合、2 回目のアクションのセットは中止されます。