フレームワークのライフサイクル外のコンポーネントの変更
$A.getCallback() を使用して、setTimeout() コールの場合のように通常の表示ライフサイクル外のコンポーネントを変更するコードをラップします。$A.getCallback() コールは、フレームワークが変更されたコンポーネントを確実に表示し、すべてのエンキューされたアクションが処理されるようにします。
コードがフレームワークのコールスタックの一部として実行される場合は、$A.getCallback() を使用する必要はありません。たとえば、コードがイベントを処理している場合や、サーバ側のコントローラアクションのコールバックにある場合です。ただし、force:recordData を使用してレコードを作成する場合など、Lightning データサービスにコールバックを渡す場合を除きます。コールバックが $A.getCallback() でラップされないまま渡されると、コンポーネントの非公開属性にアクセスしようとしたときにアクセスチェックに失敗します。
$A.getCallback() を使用する必要がある場合の例として、イベントハンドラで window.setTimeout() をコールして、一部のロジックを遅延実行する場合が挙げられます。この場合は、コードがフレームワークのコールスタック外に配置されます。
次のサンプルでは、5 秒の遅延後に、コンポーネントの visible 属性を true に設定します。
1window.setTimeout(
2 $A.getCallback(function() {
3 cmp.set("v.visible", true);
4 }), 5000
5);フレームワークが変更されたコンポーネントを確実に表示するようにする $A.getCallback() で、コンポーネントの属性を更新するコードがどのようにラップされているかに注意します。