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

フローローカルアクションの非同期要求のキャンセル

非同期要求がタイムアウトすると、フローはローカルアクションの障害コネクタを実行し、$Flow.FaultMessage をエラーメッセージに設定します。ただし、元の要求は自動的にキャンセルされません。非同期要求を中止するには、invoke メソッドで使用可能な cancelToken パラメータを使用します。

デフォルトでは、要求は 120 秒後にタイムアウトします。デフォルトを上書きするには、コンポーネントの timeout 属性に異なる Interger を割り当てます。

メモ

このクライアント側コントローラでは、invoke メソッドが Promise を返します。メソッドが必要な操作をすべて完了したら、コールが完了し、制御がフローに戻ります。

  • 要求が成功すると、メソッドは resolve() を使用して、このアクションの後にフローの次の要素を実行します。
  • 要求が失敗すると、reject() を使用して、ローカルアクションの障害コネクタを実行し、$Flow.FaultMessage を「My error message」に設定します。
  • 要求の処理に時間がかかりすぎると、cancelToken.promise.then を使用して要求を中止します。
1({
2   invoke : function(component, event, helper) {
3      var cancelToken = event.getParam("arguments").cancelToken;
4        
5      return new Promise(function(resolve, reject) {
6         var xhttp = new XMLHttpRequest();
7        
8         // Do something, like get data from
9         // a database behind your firewall
10         xhttp.onreadystatechange = $A.getCallback(function() {
11            if (/* request was successful */) {                    
12               // Complete the call and return to the flow
13               resolve();
14            } else {
15               reject(new Error("My error message"));
16            }
17         });
18         
19         // If the Promise times out, abort the request and 
20         // pass set $Flow.FaultMessage to "Request timed out"
21         cancelToken.promise.then(function(error) {
22            xhttp.abort();
23            reject(new Error("Request timed out."));
24         });
25        
26      });
27   }
28})