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小时内的呼叫数量还有一个额外的限制。
 
                    
                
                
            
        
浙公网安备 33010602011771号