首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Aviarc屏幕中设置AJAX工作流响应处理程序的正确方法是什么?

在Aviarc屏幕中设置AJAX工作流响应处理程序的正确方法是什么?
EN

Stack Overflow用户
提问于 2012-09-10 09:15:49
回答 1查看 109关注 0票数 1

假设我有一个这样的屏幕:

代码语言:javascript
复制
<screen>
    <button label="Foo" name="foo-button"/>

    <action:behaviors>
        <action:when widget-event="foo-button.onClick">
            <action:call-ajax-workflow name="ajax/do-lots-of-foo"/>
            <!-- (1) -->
            <action:call-ajax-workflow name="ajax/do-less-foo"/>
            <!-- (2) -->
        </action:when>

        <action:when system-event="onAjaxRequestCompleted">
            <!-- (3) -->
        </action:when>
    </action:behaviors>
</screen>

为每个AJAX请求放置处理程序的正确位置是什么?从理论上讲,我会假设(1)或(2)中的任何一个都是不正确的,就好像工作流是真正异步的,那么ajax/do-less-foo应该在ajax/do-lots-of-foo之前返回。

我的直觉是处理位置(3)的响应,并根据event-parameters.workflow的值有条件地执行不同的代码。

这是正确的吗?或者call-ajax-workflow实际上是阻塞的,onClick块中的命令只是串行执行?

EN

回答 1

Stack Overflow用户

发布于 2012-09-10 09:49:51

目前,call-ajax-workflow确实会在调用发生时阻塞它运行的时间线。它不会阻挡屏幕或任何其他时间线。

在Aviarc2中,您可以从脚本调用ajax工作流,使其成为非阻塞的。我不确定这个功能在Aviarc3中是否仍然容易访问(大概是)。

处理程序当前应该放在内联中,以便它们紧挨着它们正在处理的代码,或者,如果一个处理程序应该处理多个调用,则应该将其放入一个action块中,并将其作为内联处理程序调用所述action块。

只有在需要对来自ajax调用的返回不加区别地执行某些操作时,才应该绑定onAjaxRequestCompleted事件。

如果命令被更改为(可能是)非阻塞的,或者如果添加了一个非阻塞的附加命令,等等,我希望处理程序可以作为命令的子元素添加。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12344345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档