【问题标题】:i need to fire a function in gwt right after module is being loaded我需要在加载模块后立即在 gwt 中触发一个函数
【发布时间】:2011-02-03 12:05:51
【问题描述】:

我需要在模块加载后立即触发一个函数,就像在 onModuleLoad() 执行之后一样 我应该用什么来实现这个东西,Timer 或 scheduleDeferred 或其他什么?

就像是 Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { Window.alert("bon jour! amis."); } }); 或者 ... ... timer.schedule(2000); 或者 ??

【问题讨论】:

  • “模块加载后”是什么意思?是在视图完全初始化和渲染的时候吗?是在加载时启动的所有异步服务都结束了吗?现在我想说:使用调度程序,而不是计时器。
  • 是的,就在视图完全初始化和渲染之后..但是调度程序正在使加载的视图和 html 无响应,同时它正在加载其他内容(小部件)
  • 根据文档,在浏览器事件循环返回后执行延迟命令。除非小部件也使用 ScheduledCommand 或异步加载内容,否则您的 ScheduledCommand 不对无响应负责。
  • 好的,谢谢,我稍后再回复你。再次感谢
  • @wingdings:谢谢你的提问 :)

标签: java gwt timer scheduling


【解决方案1】:

Finding out when a GWT module has loaded 可能会有所帮助。

【讨论】:

    【解决方案2】:

    在您的 EntryPoint 实现中使用 Scheduler.scheduleEntry。我现在这样做是为了注入额外的(非 GWT 处理的)样式表,并且我需要确保在视图呈现之后发生这种情况。

    【讨论】:

    • 你的意思就像Scheduler.get().scheduleEntry(new ScheduledCommand() {...}); 它在jdoc 中所说的那样 在浏览器的事件循环调用GWT 生成的代码之前,将执行“入口”命令。这种类型的命令适用于需要知道“某事发生”的代码。什么是浏览器事件循环
    • 问题在于,它只在我点击刷新按钮时加载,就像我点击刷新按钮时它只执行命令一样。
    • 当您刷新时,它会重新加载您的入口点,因此再次调用 onLoadModule()。在 onLoadModule() 结束时,调用 Scheduler.get().scheduleEntry(new ScheduledCommand() {...});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多