在助手中,我有一些方法,每个方法都在组件控制器中调用@AuraEnabled方法。
其中一些调用仅在'init'事件期间进行。 从性能的角度来看,在“ init”期间我应该只拨打一个电话。
实现此目标的一种优雅方法是什么?
在“ init”期间调用的方法将返回一个字符串列表,一个十进制数以及一个字符串。
答案 0 :(得分:0)
在控制器中定义custom Apex class,该控制器将您希望从init
事件的一次调用中获取的所有信息封装起来:
public class InitializationWrapper {
@AuraEnabled
public List<String> myStringList {get; set;}
@AuraEnabled
public Decimal myDecimal {get; set;}
@AuraEnabled
public String myString {get; set;}
}
从服务器端Apex调用返回此包装类的实例到init
处理程序。您只需要进行一次往返。
答案 1 :(得分:0)
我发誓您不必做任何事情,不需要花哨的编码,SF会作为Aura框架的一部分为您做...
以前曾经像我的魅力一样为我工作(实际上甚至是相反的方式,可以肯定的是1次Apex调用=我使用的所有方法都使用相同的调控器限制,我不得不重做一些查询)
$ A.enqueueAction(action)将服务器端控制器操作添加到 要执行的动作队列。排队的所有动作将 在事件循环结束时运行。而不是单独发送 请求每个单独的操作,框架将处理事件 链接并将队列中的操作批处理为一个请求。 (...) 框架将队列中的操作批处理为一个服务器请求。 请求有效负载包括所有动作及其数据 序列化为JSON。请求有效负载限制为4 MB。
框架在将操作发送到服务器之前先对其进行排队。 在编写代码时,这种机制对您基本上是透明的 但是它使框架能够通过批量处理来最大程度地减少网络流量 将多个动作合并为一个请求(XHR)。动作的批次是 也称为棚车,类似于将棚车耦合在一起的火车 在一起。
该框架使用堆栈来跟踪要发送到 服务器。当浏览器完成事件处理并打开JavaScript时 客户端,堆栈上的入队操作被发送到服务器 批量
如果这不符合您的描述(您可以发布一些代码?)并且请求大小小于4 MB ...也许它们损坏了某些东西,并且您发现了平台错误。您确定在调试日志中看到单独的条目吗?还是在浏览器中进行网络流量监控?
也许您需要玩background actions。我的意思是,这应该在Apex中不需要多余的拐杖就能工作,以将多个调用捆绑为一个,创建复杂的响应包装器类,并且每个回调仅提取其关心的数据,这是很多不必要的代码:/