継続の例

ワイヤサービスを使用して継続をコールするコンポーネントと、ボタンをクリックした後に命令として継続をコールするコンポーネントのマークアップを次に示します。

1<!-- continuationCmp.html -->
2<template>
3  <lightning-button label="Call Continuation" onclick={callContinuation}> </lightning-button>
4  <div>@wire(startRequest) result: {formattedWireResult}</div>
5  <div>Imperative result: {formattedImperativeResult}</div>
6</template>

HTML には、継続の命令としてのコールをトリガするボタンが含まれます。詳細は、次の JavaScript ファイルを参照してください。

コンポーネントの JavaScript ファイルを次に示します。

1import { LightningElement, track, wire } from "lwc";
2import startRequest from "@salesforce/apexContinuation/SampleContinuationClass.startRequest";
3export default class ContinuationComponent extends LightningElement {
4  @track imperativeContinuation = {};
5
6  // Using wire service
7  @wire(startRequest)
8  wiredContinuation;
9
10  get formattedWireResult() {
11    return JSON.stringify(this.wiredContinuation);
12  }
13
14  // Imperative Call
15  callContinuation() {
16    startRequest()
17      .then((result) => {
18        this.imperativeContinuation = result;
19      })
20      .catch((error) => {
21        this.imperativeContinuation = error;
22      });
23  }
24
25  get formattedImperativeResult() {
26    return JSON.stringify(this.imperativeContinuation);
27  }
28}

このコードは新しい import 構文を使用します。

1import startRequest from "@salesforce/apexContinuation/SampleContinuationClass.startRequest";

この import ステートメントは、継続を返すことができる Apex メソッドをコールしていることをフレームワークに伝えます。startRequest Apex メソッドで Continuation オブジェクトを返す場合、メソッドに @AuraEnabled(continuation=true) のアノテーションを付加する必要があります。

コンポーネントはワイヤサービスを使用して startRequest Apex メソッドをコールします。ワイヤサービスはフローの管理を Lightning Web Components エンジンに委任します。継続の実行後にワイヤアダプタからのデータが使用可能になると、テンプレートは結果を表示します。Apex クラスで startRequest()@AuraEnabled(cacheable=true) のアノテーションが付加されているため、ワイヤサービスを使用できます。

継続では長時間の要求が実行されるため、ワイヤサービスを使用するのではなく命令としてのコールを実行することで、継続の実行をいつ開始するかを制御することをお勧めします。このコンポーネントは、ワイヤサービスおよび命令としてのコールを使用します。ワイヤサービスは継続をコールして結果をキャッシュします。ボタンをクリックして、同じ Apex メソッドを命令としてコールすると、キャッシュされた結果が返されてテンプレートに表示されます。

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。