Chaining Asynchronous Callouts

DEX455 - Apex 集成与工具完全指南:Callouts、命名凭据、WSDL2Apex、Mock 测试

📄 第 412 页 🎬 视频课程

课程章节介绍

同学们,今天我们聊一个关于异步调用的小技巧——怎样把多个对外部的服务请求串起来,让它们按顺序执行。 有时候,后面的请求必须用前面返回的结果才能继续。比如,你查一个产品的保修状态,系统说已经过期了,那你可能马上想接着去查能不能续保。这时,你就需要把这两个调用连成一串:必须等第一个保修查询返回了,拿到结果后,再发起第二个续保查询。这个过程就叫“链接调用”,在Apex里,我们用的是 Continuation 类来管理这种链。 一个关键的规则是:你最多只能把三个callout这样链起来。流程是这样的:你发起第一个调用,当它完成时,Apex会回调你指定的方法。在这个回调方法里,如果你还需要做下一个调用,就返回一个新的 Continuation 对象;如果任务结束了,不需要再调用,就直接返回 null。返回 null 就代表这条链结束了。 举个简单的例子,想象一下:先查保修,拿到一个过期的标记,然后决定是否去查续保。代码逻辑里,第一个回调方法内,判断如果过期,就用响应里的信息构造下一个 Continuation 返回给系统;如果还没过期,就返回 null 结束。这样就能把一套有顺序依赖的工作干净利落地串起来。 记住要点:顺序依赖就用链接调用,链接上限是三个callout,回调方法返回新的 Continuation 就是继续,返回 null 就是收工。这样讲是不是就好理解啦?

关键词

Apex Salesforce Developer Guide