我正在开发一个镀铬扩展程序。扩展名至少使用10个javascript文件。所有JS文件都包含在background.html中,以便执行它们。
<script type="text/javascript" src="../lib/jquery.js">
<script type="text/javascript" src="../lib/one.js"></script>
<script type="text/javascript" src="../lib/two.js"></script>
.
.
.
.
<script type="text/javascript" src="../lib/ten.js"></script>one.js生成一个异步XmlHttpReques,因此需要一些时间来完成执行。
我的问题是--在one.js被完全执行之前,two.js被执行,我不想这样做,因为two.js引用了来自one.js的一些对象。
注意:i不能在background.html中使用内联JS &不能在one.js中创建同步XmlHttpRequest
谢谢。
增编:示例ajax函数
function myFunction () {
$.ajax({
url: chrome.extension.getURL("../../data.json"),
dataType: "json",
beforeSend: function(xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
})
.success(function (widgetJson) { // some code })
.fail(function(jqXHR, textStatus) { // some code });
}发布于 2015-11-24 05:48:37
您可以创建一个名称空间函数,您可以在two.js中调用该函数,如下所示:
window.App = App || {};
var myAjaxFunction = function myAjaxFunction() {
return $.ajax({...include ajax stuff here...})
.success(function(data) {
...//do something...
})
.fail(function(error) {
...//handle error
});
};
App.ajaxPromise = myAjaxFunction();然后在two.js中解决它,就像您已经是这样,比如:
$.when(App.ajaxPromise)
.then(function(data) {
...//do more stuff
});希望这能有所帮助。最好的。
https://stackoverflow.com/questions/33884160
复制相似问题