You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Genexus Web中打开弹窗时能否暂停执行,待关闭后继续?

在GeneXus Web中实现弹窗关闭后再执行后续代码的简便方案

方案1:利用GeneXus 17U10自带的Popup回调参数(无需扩展)

GeneXus 17U10的Popup方法支持传入回调逻辑,直接在调用时指定弹窗关闭后要执行的代码即可,无需依赖额外扩展工具包。修改代码如下:

Event 'popup'
    WReadFlag.Popup(&FLAG, Sub()
        msg("FLAG " + &FLAG)
    EndSub)
Endevent

通过Popup方法的第二个参数传入匿名子过程,弹窗关闭后会自动执行子过程内的代码,此时&FLAG已被弹窗赋值,能正常获取到有效值。

方案2:使用WorkWithPlus的模态弹窗特性(项目已集成时)

如果项目已经引入WorkWithPlus,它的模态弹窗默认支持阻塞式执行逻辑,只需将弹窗设置为模态模式,后续代码会自动等待弹窗关闭后再执行:

Event 'popup'
    WReadFlag.Popup(&FLAG, Mode: Modal)
    msg("FLAG " + &FLAG)
Endevent

WorkWithPlus的模态弹窗会暂停当前事件的代码执行流程,直到弹窗关闭,后续的msg语句就能直接拿到正确的&FLAG值。

方案3:参考GeneXus新版本的Async/Await特性(兼容升级场景)

如果后续考虑升级到GeneXus 18及以上版本,可以利用新增的异步等待特性,通过Await关键字实现更直观的阻塞逻辑:

Event 'popup' Async
    Await WReadFlag.PopupAsync(&FLAG)
    msg("FLAG " + &FLAG)
Endevent

需要将事件标记为Async,然后调用PopupAsync方法并配合Await关键字,代码会等待弹窗关闭后再执行后续语句,写法更简洁易懂。

内容的提问来源于stack exchange,提问作者Nicola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:32:32