如何挂钩SystemJs.import的完整事件?

时间:2017-01-19 20:37:44

标签: javascript systemjs

我的网页的onready功能如下所示:

$(function(){
    importJS();
    init();
});

我页面上的importJS()函数如下所示:

function importJS()
{
  // set js ref path
  SystemJS.config({
    baseURL: '/js/'
  });

  //load js modules
  SystemJS.import('Init.js');   
}

Init.js lib有一个init()函数,但是当我的onready函数运行时,init()函数调用找不到init()函数。我逐步完成了Chrome Dev Tools,看起来importJS()在init()被调用时还没有完成加载Init.js。使这段代码有效的诀窍是什么?即如何在init()被调用时确保SystemJS已经完全加载了Init.js?

1 个答案:

答案 0 :(得分:0)

SystemJS.import返回一个承诺,导入完成后调用init()的最简单方法是从importJS()返回该承诺,并在其init()中调用then回调:

$(function(){
    importJS().then(function() {
        init();
    }
});

function importJS()
{
  // set js ref path
  SystemJS.config({
    baseURL: '/js/'
  });

  //load js modules
  return SystemJS.import('Init.js');   
}