我想在我的角应用程序中使用库MIDI.js。要初始化它,可以调用MIDI.loadPlugin,它会在加载某些文件时触发一个回调。
我想让我的应用程序中的控制器知道何时加载文件。
我当前的方法是一个专用服务,在创建时调用MIDI.loadPlugin,并在回调被触发时发送$rootScope.$broadcast
。
这是最好的方法吗,特别是在可测试性方面?
答案 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;
});