Salesforce 异步概述 -- Salesforce Future Apex

使用future注释来标识异步执行的方法。当您指定future时,该方法将在Salesforce有可用资源时执行。
 
例如,您可以在对web service进行异步Web service调用时使用future注释。如果没有注释,Web service调用将来自执行Apex代码的同一个线程,并且在调用完成(同步处理)之前不可能发生其他处理。
 
带有future注释的方法必须是静态方法,并且只能返回一个void类型。指定的参数必须是基本数据类型、基本数据类型的数组或基本数据类型的集合。具有future注释的方法不能将sObjects或对象作为参数。
 
要使类中的方法异步执行,请使用future注释来定义该方法
 
global class MyFutureClass {
@future
static void myMethod(String a, Integer i) {
System.debug('Method called with: ' + a + ' and ' + i);
// Perform long-running code
}
}
要允许在将来的方法中进行标注,请指定(callout=true)。默认值是(callout=false),它阻止方法进行callout。
 
@future (callout=true)
public static void doCalloutFromFuture() {
//Add code to perform callout
}
 
future方法
使用时,请记住以下几点:
  • 具有future注解的方法必须是静态方法,并且只能返回void类型。
  • 指定的参数必须是原始数据类型,原始数据类型的数组或原始数据类型的集合。future方法不能将对象作为参数。
  • future方法不一定按照它们被调用的顺序执行。此外,两个将来的方法有可能同时运行,如果这两个方法正在更新同一条记录,则可能导致记录锁定。
  • future方法不能在Visualforce控制器的getMethodName(),setMethodName()或构造函数中使用。
  • 您不能从future方法中调用future方法。您也不能在运行future方法时调用调用future方法的触发器。请参阅参考资料中的链接,以防止将来递归调用方法。
  • 带有注释的方法不能使用getContent()和getContentAsPDF()方法。
  • 每个Apex调用最多只能有50个future呼叫,而且24小时内的呼叫数量还有一个额外的限制。
posted on 2021-05-11 15:46  Bzi~  阅读(313)  评论(0)    收藏  举报