我以最虚拟的方式将数据传递给全局变量。目前:
var tranlationJson =
$.ajax({
type: "GET",
url: "translation.xml",
contentType: "text/xml",
dataType: "xml",
success: function (dataSource) {
tranlationJson=ToJasonParser(dataSource);
}
});
我想修改它以使用promisses。问题是后面的代码是使用第三方js文件,所以我的代码就像
<script
<script
var tranlationJson = $.ajax({ ...
<script 111
<script 222
和脚本111和222包含将使用其中的translationJson的自定义库。那么如何确保在加载脚本之前填充translationJson?
答案 0 :(得分:0)
您可以从任何脚本访问全局变量:window
。您可以var translationJson = $.ajax({...
代替window.translationJson = $.ajax({...
$.ajax({ success:
。但这里有两件重要的事情:
首先,你不知道首先会发生什么:ajax请求已经完成或者你的一些脚本已经要求你的变量了。解决方案是将所有运行的变量脚本绑定到$.ajax({
type: "GET",
url: "translation.xml",
contentType: "text/xml",
dataType: "xml",
success: function (dataSource) {
tranlationJson=ToJasonParser(dataSource);
someScriptRun(); /* here you run some depending on your variable script */
}
});
回调。像这样:
var periodicalAttemptToRunScriptDependant = setInterval( function(){
if( 'object' == typeof window.translationJson ){
someScriptRun(); /* here you run some depending on your variable script */
clearInterval( periodicalAttemptToRunScriptDependant );
}
}, 1000 );
另一种方法是检查所有相关脚本中的变量,如下所示:
var tranlationJson;
$.ajax({
type: "GET",
url: "translation.xml",
contentType: "text/xml",
dataType: "xml",
success: function (dataSource) {
tranlationJson = ToJasonParser(dataSource);
}
});
第二:在您的示例中,对变量的任何请求都将导致ajax请求,因为它实际上不是变量而是函数。尝试将您的代码更改为:
{{1}}