2014-10-04 2 views
0

Я хочу использовать библиотеку MIDI.js в своем угловом приложении. Чтобы инициализировать его, вы вызываете MIDI.loadPlugin, который принимает обратный вызов, который запускается при загрузке некоторых файлов.Интеграция библиотеки с асинхронной загрузкой в ​​угловом приложении

Я хочу, чтобы контроллер в моем приложении знал о загрузке файлов.

Мой текущий подход - это выделенный сервис, который вызывает MIDI.loadPlugin, когда он создан, и отправляет $rootScope.$broadcast при обратном вызове.

Это лучший подход, особенно в отношении проверки?

ответ

1

Я бы воспользовался обещанием в вашем сервисе, чтобы получить доступ к асинхронному ресурсу. Затем для всех функций в службе, которые в ней нуждаются, они просто называют метод get, который возвращает обещание.

Я попытаюсь опубликовать код примера позже, когда на компьютере.

+0

Благодарим за это! Я опубликовал код, который я придумал, используя метод обещаний. – mskel

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; 

}); 
Смежные вопросы