首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Chrome扩展中同步执行外部js文件

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

Stack Overflow用户
提问于 2015-11-24 01:59:13
回答 1查看 404关注 0票数 1

我正在开发一个镀铬扩展程序。扩展名至少使用10个javascript文件。所有JS文件都包含在background.html中,以便执行它们。

代码语言:javascript
复制
<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函数

代码语言:javascript
复制
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 }); 
  }
EN

回答 1

Stack Overflow用户

发布于 2015-11-24 05:48:37

您可以创建一个名称空间函数,您可以在two.js中调用该函数,如下所示:

代码语言:javascript
复制
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中解决它,就像您已经是这样,比如:

代码语言:javascript
复制
$.when(App.ajaxPromise)
  .then(function(data) {
    ...//do more stuff
  });

希望这能有所帮助。最好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33884160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档