Я пытаюсь обернуть свою голову вокруг рисования линии между прослушивающими событиями/обработчиками событий и разрешением обещания с помощью angularjs.addEventListener и angularjs обещание: оберните его
Я использую PreloadJS в сервисе angularjs, занимающемся аудио.
Эта служба используется как зависимость для другой службы, которая должна иметь возможность выполнять некоторые действия после предварительной загрузки файлов (отсюда и использование обещания).
Но я понятия не имею, оставленного на том, чтобы обернуть его все вместе ...
Таким образом, классический бит кода:
// Event handlers
audio.queue.addEventListener('fileload', function(event) {
console.log('charging file', event);
// do some things while loading (.notify)
});
audio.queue.addEventListener('complete', function(event) {
console.log('file loaded', event);
// do some things once it's loaded (.resolve)
});
audio.queue.addEventListener('error', function(event) {
console.log('error while charging file', event);
// do some things in case of error (.reject)
});
// Preload a file
audio.queue.loadFile({id: 'test', src: 'test.mp3'});
Что я мог сделать?
A. $ q.all по массиву обещаний, поданных тремя обратными вызовами?
B. У меня нет B ... будут оценены
Любая помощь или приводит
EDIT:
В ответ на C14L answer. Допустим, мы имеем:
var file1 = 'test.mp3' //file exists
var file2 = 'azepsl.mp3' //file doesnt exist
var file3 = 'test2.mp3' //file exists
с C14L code я получил 3 обещание отклоненного из 1 файл, который не существует.
Если я использую простой старый eventHandler, как показано выше, я получил 2 события успеха и 1 сбой (что довольно нормально).
Что может быть причиной этой проблемы?
Может ли это быть из-за нескольких eventListeners, добавленных в audio.queue?
Благодарим за помощь и синтаксис создания обещания, которого я не знал. Но, к сожалению, это не полностью устраняет проблему, как объяснялось в моем редактировании. –