如何从dojo插件中的require failure中恢复?

我有一个要求,我需要将模块列表传递给插件,并让它加载模块并执行一些工作.如果我传递了一个无法加载的模块,我应该报告错误并转到列表的其余部分.我被困了,因为我无法弄清楚如何从坏模块的要求失败中恢复.我可以用其他技术来满足这个要求吗?这是一个在没有我所有其他要求的情况下将问题提炼下来的示例,我需要从加载my / thing2失败中恢复:

define("my/thing",[],function() {
    return 'thing';
});
define("my/loader",function() {
    return {
        load: function(mid,require,callback) {
            console.log('inside load',arguments);

            // is there some way to recover when this require fails
            // or some other technique I can use here?
            try {
                require([mid],function(mod) {
                    console.log('inside require,mod=',mod);
                    callback(mod);
                });
            }
            catch (error) {
                // never gets here,when the require fails everything just stops
                console.log(error);
                callback("@R_502_159@ to load " + mid);
            }
        }
    }
});

require(["my/loader!my/thing"],function(loaded) {
    console.log('loaded',loaded);
});

require(["my/loader!my/thing2"],loaded);
});

解决方法

如果您严格要求忽略无效或有故障的模块并继续下一个模块,请在将它们放入require语句之前使用 dojo/_base/lang::exists()

require(['/dojo/_base/lang','dojo/text!my/thing2'],function(lang,myThing2) {
    if(lang.exists(myThing2)) {
        //success
    } else {
        //failure
    }
});

相关文章

参考博客:https://blog.csdn.net/blog_szhao/article/details/50220181           https://doj...
我有一个包含多个字段的Dojo DataGrid.我目前正在设置查询一次搜索一个字段,如下所示: grid.setQuery(...
我正在使用JsonRestStore,但想为它添加一个自定义Accept标头.最好的方法是什么? 这与dijit.layout.Con...
我需要选择一个给定其URL的链接节点.使用属性选择器的效果非常好,除了少数几个url有tilda的情况.我无法...
我正在尝试使用Dojo JSONREST的增强网格,我遇到了一些问题. 我一直在寻找一些例子,但无法弄清楚如何做我...
如何根据一些运行时参数隐藏dgrid(gridFrom Html)中的完整列? 让我们说如果参数的值为true我应该能够显...