Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Requirejs加载主干和下划线的潜在竞争条件_Javascript_Jquery_Backbone.js_Requirejs_Underscore.js - Fatal编程技术网

Javascript Requirejs加载主干和下划线的潜在竞争条件

Javascript Requirejs加载主干和下划线的潜在竞争条件,javascript,jquery,backbone.js,requirejs,underscore.js,Javascript,Jquery,Backbone.js,Requirejs,Underscore.js,当使用requirejs从amazon s3中提取主干线和下划线时,下面的错误会在1/10左右刷新,该主干线和下划线在/shared/common.js文件中的require shim中定义 下面的代码加载到header.jade文件中,以呈现header中的主干视图,从而从localstorage中提取数据并确定用户的信息 然后将其加载到头DOM中 script(type="text/javascript"). require(['/shared/common.js'], funct

当使用requirejs从amazon s3中提取主干线和下划线时,下面的错误会在1/10左右刷新,该主干线和下划线在/shared/common.js文件中的require shim中定义

下面的代码加载到header.jade文件中,以呈现header中的主干视图,从而从localstorage中提取数据并确定用户的信息 然后将其加载到头DOM中

script(type="text/javascript").
    require(['/shared/common.js'], function (common) {
      require(['/shared-marketplace/views/global-header-view.js', '/shared-marketplace/views/quote-form-modal-view.js'], function(GlobalHeaderView, QuoteFormModalView){
        var globalHeaderView = new GlobalHeaderView({el : $('header')});
        $('.open-quote-request').on('click', function(e){
          e.preventDefault();
          var phaseLoad = $(e.currentTarget).data('phase')
          quoteFormView = new QuoteFormModalView({'phase' : phaseLoad, 'fromNonProfilePage' : true}).$el.modal({show : true, backdrop: 'static'});
        });
      });  
    });
页面页脚的代码也依赖于/shared/common.js,在主页js可以与所有主干视图一起加载之前,需要先加载/shared/common.js

script.
require(['/shared/common.js'], function (common) {
  require(['main.js']);
  require(['/shared-marketplace/js/search-advisor.js'], function(){
    require(['/shared-marketplace/js/quote-form.js']);
  });
});
问题

  • 对common.js的两个require调用之间是否存在导致上述错误的竞争条件,还是其他原因
  • 通过require加载具有相同依赖项(即common.js)但位于DOM上多个位置的文件的最佳方式是什么

  • 如果可以确保变量/属性等在作用域链中定义之前不会被使用,则可以使用以下hack:。(我用requirejs在谷歌上搜索了比赛条件。)@ourmandave我想你错过了我说的我在使用shim@AleksandrLitvak你到底在哪里需要主干线和下划线。。?垫片是什么样子的。。?为什么不使用模块而不是嵌套的requires?@PerryTew这正是我试图解决的问题,但我想我找到了问题所在。我相信我在调用依赖于下划线和主干的模块时设置了require.config,因为竞争条件,配置要么用s3位置更新,要么不是这样,有时我调用本地路径而不是s3引用。我做了一些更新,现在看起来一切正常。如果您可以确保变量/属性等在作用域链中定义之前不会被使用,您可以使用以下hack:。(我用requirejs在谷歌上搜索了比赛条件。)@ourmandave我想你错过了我说的我在使用shim@AleksandrLitvak你到底在哪里需要主干线和下划线。。?垫片是什么样子的。。?为什么不使用模块而不是嵌套的requires?@PerryTew这正是我试图解决的问题,但我想我找到了问题所在。我相信我在调用依赖于下划线和主干的模块时设置了require.config,因为竞争条件,配置要么用s3位置更新,要么不是这样,有时我调用本地路径而不是s3引用。我做了一些更新,现在看起来一切正常。