Javascript 使用appendChild异步加载的脚本最后加载

Javascript 使用appendChild异步加载的脚本最后加载,javascript,Javascript,我创建了一个脚本,通过将它附加到head标记来添加javascript文件 使用我创建的以下代码: var Dim = (function(s){ var storage; function loadError (oError) { throw new URIError("The script " + oError.target.src + " is not accessible."); } return

我创建了一个脚本,通过将它附加到
head
标记来添加javascript文件

使用我创建的以下代码:

var Dim = (function(s){ 
    var storage; 
    function loadError (oError) {
        throw new URIError("The script " + oError.target.src + " is not accessible.");
    }
    return {
        require : function(script,callback){
            var oScript = document.createElement("script");
            oScript.type = "text\/javascript";
            oScript.onerror = loadError;
            if (callback) { 
                oScript.onload = callback; 
            }
            document.head.appendChild(oScript);
            oScript.src = script;
        }
    };
})();
当我们像这样使用脚本时:

Dim.require("script.js", function(){alert(token)}); alert(token);
script.js代码是:

alert(" Ok"); var token = " Hello";
警报(令牌)
抛出错误

谁能告诉我这个问题吗

[问题已编辑]

Dim.require("script.js", function(){alert(token)}); alert(token);
它运行第一个警报,因为它在浏览器加载脚本时调用的回调中

if (callback) { 
  oScript.onload = callback; 
}
第二个是不给你一个警告,因为它给你一个错误

未捕获引用错误:未定义令牌


您正在异步加载
script.js
,并且在执行第二个警报时,
script.js
尚未加载。

。我也不明白为什么会失败。@T.J.Crowder它对我的控制台说“令牌未定义”。@MMJM:上面的链接,它只是封装在plnkr中的代码,1。没有显示该错误,以及2。确实显示包含
令牌内容的警报(
“Hello”
)。@AlpeshJikadra:“问题是脚本已加载,但我无法使用其内容。”谢谢。我对异步不太了解scripts@MMJM检查