GWT同步脚本加载

时间:2015-10-12 06:51:10

标签: javascript java gwt asynchronous

我正在寻找一种方法来确保GWT中外部脚本的排序。方式必须与SuperDevMode兼容。到目前为止我提出的两种方式是

  1. 将所有javascript文件复制到war文件夹中(不可取);和
  2. 在onModuleLoad()中使用ScriptInjector。
  3. 我选择使用选项2,但我希望知道除了级联回调之外是否还有其他方式以特定顺序执行脚本,因为这会导致性能显着下降。我想知道是否有其他人遇到过这个问题。

    以下是级联回调的简单示例。

    ScriptInjector.fromUrl(GWT.getModuleBaseForStaticFiles() + "somescript.js").setCallback(new Callback<Void, Exception>() {
        @Override
        public void onFailure(Exception reason) {
        }
    
        @Override
        public void onSuccess(Void result) {
            // repeat ScriptInjector.fromUrl() n many times
        }
    }).inject();
    

    截至目前,我正在寻找一种并行异步下载所有javascript文件(存储在String中?)的方法,然后使用ScriptInjector.fromString(jsBody)按所需顺序注入它们。有没有办法使用GWT将脚本主体下载到特定的类?我的方法的任何建议或改进将不胜感激。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以通过将脚本放入TextResources(可以是同步或异步)来按所需顺序注入脚本。

如果您想将这些脚本保留在主应用程序之外,可以先加载它们,然后按所需顺序注入它们。