У меня есть этот код:AngularJS рекурсивная функция на Promises
$scope.play = function (audio) {
var deferred = $q.defer();
api.play(audio).then(function() {
deferred.resolve();
}, function (err) {
deferred.reject();
console.log(err);
});
return deferred.promise;
};
У меня есть массив audio
, что я использую в мой контроллер и перейти к $scope.play
. Однако, используя ниже:
var playIndex = 0;
$scope.play(audios[playIndex]).then(function() {
playIndex++;
$scope.play(audios[playIndex]);
});
Это работает в течение первых двух аудиофайлов я имею в массиве, конечно, так как я не проверять возвращение второго .play
. Как я могу сделать этот цикл через весь массив аудио?
Заранее спасибо.
Оберточные существующие обещания в новых отсрочек является анти-шаблоном. Ваша функция должна быть '$ scope.play = function (audio) {return api.play (audio); } '. Вот и все. –