Asynchronous HTTP Callout Example

DEX502 - Module 14: Apex and Integration

📄 第 600 页 🎬 视频课程

课程章节介绍

今天我们来聊聊Salesforce中的异步HTTP调用,也就是Asynchronous HTTP Callout。在Salesforce中,当你需要从外部系统获取数据或者发送数据到外部系统时,通常会使用HTTP Callout。但是,有时候这些操作可能会比较耗时,如果直接在同步代码中执行,可能会导致用户体验变差,甚至超时。 为了避免这种情况,Salesforce提供了异步调用的方式,也就是我们说的Asynchronous HTTP Callout。要实现异步调用,你需要在方法上使用`@future`注解。这个注解告诉Salesforce,这个方法应该在后台异步执行,不会阻塞用户的操作。 举个例子,假设你有一个方法需要调用外部的API来获取一些数据,你可以这样写: ```apex public class MyClass { @future(callout=true) public static void makeCallout() { HttpRequest req = new HttpRequest(); req.setEndpoint('https://example.com/api/data'); req.setMethod('GET'); Http http = new Http(); HttpResponse res = http.send(req); // 处理响应 System.debug(res.getBody()); } } ``` 在这个例子中,`makeCallout`方法被标记为`@future(callout=true)`,这意味着它会在后台异步执行。你可以从其他方法中调用`makeCallout`,而不用担心它会阻塞主线程。 需要注意的是,`@future`方法有一些限制,比如它不能返回任何值,也不能直接调用其他`@future`方法。此外,`@future`方法的执行顺序是不确定的,所以你不能依赖它们的执行顺序。 总之,使用`@future`注解可以让你在Salesforce中轻松实现异步HTTP调用,提升用户体验和系统性能。希望这个解释对你有帮助!