在角应用程序中集成库与异步加载

时间:2014-10-04 01:05:39

标签: angularjs

我想在我的角应用程序中使用库MIDI.js。要初始化它,可以调用MIDI.loadPlugin,它会在加载某些文件时触发一个回调。

我想让我的应用程序中的控制器知道何时加载文件。

我当前的方法是一个专用服务,在创建时调用MIDI.loadPlugin,并在回调被触发时发送$rootScope.$broadcast

这是最好的方法吗,特别是在可测试性方面?

2 个答案:

答案 0 :(得分:1)

我会在您的服务中使用promise来访问异步资源。然后,对于需要它的服务中的所有函数,他们只需调用返回promise的get方法。

我稍后会尝试在计算机上发布一些示例代码。

答案 1 :(得分:0)

根据戈登的建议,这是我提出的解决方案。

.factory('midiLoader', ['MIDI', '$q', function (MIDI, $q) {

  var service = {};

  service.loadFiles = function() {
    return $q(function(resolve, reject) {
      MIDI.loadPlugin({
        soundfontUrl: "bower_components/midi/soundfont/",
        instrument: "acoustic_grand_piano",
        callback: function () {
          resolve(null);
        }
      });
    });
  }

  return service;

});