停止JavaScript一段时间

Stop javascript for some time

本文关键字:一段时间 JavaScript 停止      更新时间:2023-09-26

我有以下代码:

function require(url, callback, errcallback) {
    url = makeurl(url);
    var node = document.createElement('script');
    node.type = 'text/javascript';
    node.async = true;

    if (node.readyState) { //IE
        node.onreadystatechange = function () {
            if (node.readyState == "loaded" || node.readyState == "complete") {
                node.onreadystatechange = null;
                callback;
            }
        };
    } else {
        node.onload = function () {
            callback;
        };
    }
    node.addEventListener('load', callback, false);
    node.addEventListener('error', errcallback);
    node.onerror = errcallback;
    node.src = url;
    head.appendChild(node);
    return require.getcontents(url);
};

问题是当我加载一些 js 文件时,这还不够快,并且在尝试调用我尝试加载的文件内的函数时,它会返回一个未定义的错误。

例:

<script>
 require(['lib/static/jscript/smodule.js'], null , null );
</script>
<script>
  Smodule.somefunction();
</script>

它会说Smodule没有定义。(文件正在加载,但速度不够快)

将调用放入回调中:

require(['lib/static/jscript/smodule.js'], function() {
    Smodule.somefunction();
}, null );

你也没有在require中正确调用回调,你需要在callback之后()调用它:

if (node.readyState) { //IE
    node.onreadystatechange = function () {
        if (node.readyState == "loaded" || node.readyState == "complete") {
            node.onreadystatechange = null;
            callback();
        }
    };
} else {
    node.onload = function () {
        callback();
    };
}