Continuations — Process: Action Method & Callback

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

📄 第 407 页 🎬 视频课程

课程章节介绍

同学们好,咱们这节课呢,来说说一个很实用的功能——在Visualforce页面里,怎么去调用外部系统,也就是有时候文档里提到的“收件箱调用”。我们要实现这种异步、不卡页面的操作,就必须用到Salesforce里的一个专门的对象,叫作 ,Continuation,。 好,我们先理清一下思路:你想要在页面上点一个按钮,然后它在后台静悄悄地给外部系统发个请求,拿到结果再刷新页面,而不让用户干等着。这整个过程就得靠 Continuation 来帮忙。 具体做法是这样的: 第一步,你要在自己的 action 方法里,创建一个 Continuation 实例,。创建的时候,必须指定两样东西:一个是,超时值,,就是等多少秒还没回应就算超时;另一个是,回调方法的名字,,就是当外部系统把数据返回后,系统要调用的那个方法,你用一个字符串告诉它就行。 第二步,我们要把具体的 HTTP 请求跟这个 Continuation 关联起来。你得先 new 一个 `HttpRequest` 对象,把接口地址、请求方式、参数什么的都配置好,然后调用 Continuation 对象上的 `addHttpRequest` 方法,把这请求添加进去。这样,Continuation 才知道它要去调哪个服务。 第三步,也是特别要记住的一点:,action 方法必须返回这个 Continuation 对象,。你一返回,Visualforce 就明白现在要发一个异步请求了,页面会进入等待状态,不会卡死。 当外部系统终于把结果送回来,系统就会自动触发前面指定的回调方法。这个回调方法,不接受任何参数,,即使你的页面用了标准控制器也一样。在回调方法里,你就可以处理返回的数据了。 那处理完了之后呢,回调

关键词

Apex Salesforce Developer Guide