Javascript 主干foreach等待
我有一个轨道模型和一组轨道。模型本身有一个函数play(),用于播放单曲。当单曲(按列表顺序)完成时,收藏应能够一首接一首地播放每一首曲目 型号:Javascript 主干foreach等待,javascript,backbone.js,Javascript,Backbone.js,我有一个轨道模型和一组轨道。模型本身有一个函数play(),用于播放单曲。当单曲(按列表顺序)完成时,收藏应能够一首接一首地播放每一首曲目 型号: app.Track = Backbone.Model.extend({ defaults: {...}, initialize: {...}, play: function(playlist) { if(finished && playlist) { Backbone.pub
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
});
}
})
收藏:
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);
我认为你应该有两个模型来连续播放歌曲。首先,您有一个曲目模型和它对应的曲目列表集合,但接下来您会有另一个称为PlayList的模型和一个集合 然后,曲目的播放函数应采用另一个参数,该参数将是在曲目播放结束时必须执行的回调。通过这种方式,您也可以在播放列表上使用播放功能,该功能将通过嵌套回调(听起来像递归乐趣:P)来播放一行中的所有歌曲 编辑:我继续攻击了我所想的一些小实现。我这里不使用主干,但我相信您可以调整这个想法,如果您有一些将回调函数传递给歌曲播放函数的方法(顺便问一下,您实际上是如何播放歌曲的?) 我也对这件事很感兴趣