我有一个轨道模型和一组轨道。模型本身有一个播放单个曲目的函数 play()。当单个曲目(按列表顺序)完成时,该集合应该能够逐个播放每个曲目。
模型:
app.Track = Backbone.Model.extend({
defaults: {...},
initialize: {...},
play: function(playlist) {
if(finished && playlist) {
Backbone.pubSub.trigger('finishedPlaybackLoadNext')
} else {
Backbone.pubSub.trigger('finishedPlayback')
}
},
})
收藏:
var TrackList = Backbone.Collection.extend({
model: app.Track,
nextOrder: function() {...},
comparator: function( track ) {...},
playAll: function() {
this.models.forEach(function(item) {
item.play(true); //true = play as playlist
});
}
})
正如预期的那样,forEach 不会等到列表中每个单独模型的播放完成。我怎样才能实现这种等待?
编辑:我正在使用全局触发器/订阅者来在不同的视图中共享它们。
Backbone.pubSub = _.extend({}, Backbone.Events);