课程章节介绍
同学们,我们来看看这个示例里按钮的动作是怎么在后台实现的。想象一下,你正在用Visualforce页面点一个外卖,你按下“下单”按钮,其实不是直接让页面卡在那里干等,而是用一种更聪明的方式——叫做Continuation,来调度这个远程调用。
在Apex控制器的方法里,我们会先创建一个Continuation对象。你可以把它理解成一张“任务单”,上面写着两件重要的事:第一个是超时时间,比如最多等30秒,防止外部服务一直没反应;第二个是回调方法的名称,就是等数据回来之后,我们要让系统自动调用的那个方法名。
接着,我们把真正的HTTP请求,比如去查询外部订单系统的接口,挂到这张任务单上,然后把Continuation对象直接返回出去。这时候,Visualforce的请求就会暂时挂起,但用户界面不会完全冻住——页面会显示一个加载状态,让用户知道正在处理中。
当外部服务终于把响应数据送回来时,之前暂停的Visualforce请求就会自动恢复,并且触发我们指定的那个回调方法。页面就能拿到响应结果,然后刷新相应的部分,比如显示“下单成功”或者更新状态。
要注意啊,在做这一切之前,必须让Salesforce信任你要访问的外部站点。要么去设置里把远程站点的URL加到“授权的远程站点”列表中,要么更规范一点,使用命名凭据来定义这个安全的连接。这样Salesforce才允许发出请求。
整个过程就是这么个异步协作的模式,避免了请求超时,也让用户体验更流畅。好,这段先讲到这儿,有什么问题吗?
关键词
Apex
Salesforce
Developer Guide