Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
requirejs模块加载缓慢,导致javascript框架其他部分出现空指针_Javascript_Ajax_Requirejs - Fatal编程技术网

requirejs模块加载缓慢,导致javascript框架其他部分出现空指针

requirejs模块加载缓慢,导致javascript框架其他部分出现空指针,javascript,ajax,requirejs,Javascript,Ajax,Requirejs,我们已经开始在javascript框架中使用requirejs,但是我们注意到一个似乎只在firefox中出现的问题 当请求来自服务器时,它包含我们想要显示的组件(按钮、标签、复选框等)的html和javascript。 该脚本将包含特定于组件的信息。例如,标签中的文本应该是什么颜色 一个简单的例子是 <button type="button" id="button123">Test</button> require(['BUTTONDEPENDENCY'], funct

我们已经开始在javascript框架中使用requirejs,但是我们注意到一个似乎只在firefox中出现的问题

当请求来自服务器时,它包含我们想要显示的组件(按钮、标签、复选框等)的html和javascript。 该脚本将包含特定于组件的信息。例如,标签中的文本应该是什么颜色

一个简单的例子是

<button type="button" id="button123">Test</button>
require(['BUTTONDEPENDENCY'], function() {
    register("button123");
    console.log("component info");
    ...
});
该请求还包含一个JSON数组,其中包含有关这些组件的信息(我将不详细介绍它们)。 JSON数组在浏览器上加载html/javascript后执行

在JSONArray中执行每个对象时,我需要执行一个
getComponent()
函数。当它试图执行
getComponent('button123')
时,找不到它,因为require函数尚未执行(需要执行
register(“button123”);
)。它确实会被执行,但是在找不到它之后。我在Chrome中没有看到这个问题,所以我猜这是时间问题(Chrome加载依赖项的速度更快?)

为什么它在铬合金中工作良好

为什么即使以前已加载到模块,加载所需的时间也更长

我是否应该强制javascript在执行getComponent之前等待,直到执行了register?这可能会导致我们的应用程序出现问题


任何建议都很好。

我相信这正是RequireJS的工作方式

例如,在以下代码中,我相信您将在1之前获得第2个警报:

<script>
require(['foo'], function(foo){
    alert(1);
});
</script>
<!-- lots of HTML -->
<script>
    alert(2);
</script>

require(['foo'],函数(foo){
警报(1);
});
警报(2);
<script>
require(['foo'], function(foo){
    alert(1);
});
</script>
<!-- lots of HTML -->
<script>
    alert(2);
</script>