Javascript 如何在Chrome扩展中同步执行外部js文件

Javascript 如何在Chrome扩展中同步执行外部js文件,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在开发一个chrome扩展。扩展使用至少十个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/t

我正在开发一个chrome扩展。扩展使用至少十个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>

您可以创建一个可以在
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
  });

希望这有帮助。最好的。

您可以创建一个名称空间函数,可以在
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
  });

希望这有帮助。最好。

你能利用从
one.js
two.js
的承诺或延迟吗?R.A.卢卡斯,我对js不熟悉,不知道这些概念,让我来看看,然后试试。谢谢。您能展示一下您正在等待的xhr代码是什么样子吗?
function myFunction(){$.ajax({url:chrome.extension.getURL(../../data.json)),数据类型:“json”,beforeSend:function(xhr){xhr.overrideMetype(“text/plain;charset=x-user-defined”);}).success(function(widgetJson){//some code}).fail(function(jqXHR,textStatus){//some code});}
你能利用从
one.js
two.js
的承诺或延迟吗?R.A.卢卡斯,我对js不熟悉,也不知道这些概念,让我检查一下,试试看。谢谢。您能展示一下您正在等待的xhr代码是什么样子吗?
function myFunction(){$.ajax({url:chrome.extension.getURL(../../data.json)),数据类型:“json”,beforeSend:function(xhr){xhr.overrideMetype(“text/plain;charset=x-user-defined”);}).success(函数(widgetJson){//some code}).fail(函数(jqXHR,textStatus){//some code});}
上述解决方案没有帮助。现在,我不再使用JSON,而是将所有数据放在JS文件中,这样我就可以引用JS对象&无需阅读JSON。好的,因为它是一个扩展,您可能需要使用消息传递在脚本之间进行通信,请查看此文档:上述解决方案没有帮助。现在,我不再使用JSON,而是将所有数据放在JS文件中,这样我就可以引用JS对象&无需阅读JSON。好的,因为它是一个扩展,您可能需要使用消息传递在脚本之间进行通信,请查看以下文档: