我使用函数 $(".menulist").on("click", function (e) {
e.preventDefault();
var url = $(this).attr("href");
$.ajax({
url: url,
dataType: 'html',
cache: true,
success: function (data) {
$('#result').html(data);
requestCache[url] = data;
}
});
});
播放多个视频,然后显示功能为doPlaySequence
的图片。我写了这样的代码:
drawConfig

但是,视频不会在视频结束时立即调用function wait(dtd) {
var dtd = $.Deferred();
setTimeout(function() {
doPlaySequence();
dtd.resolve();
}, 0);
return dtd.promise();
}
wait().then(drawConfig);
。我只是简单地复制了这个例子,所以代码可能看起来很难看。我使用video.js来播放视频。
drawConfig

答案 0 :(得分:1)
要仅在视频完成后运行drawConfig
函数,您需要在视频“ended
事件处理程序中调用它,或者创建一个可以解析的声明”那件事。试试这个:
function doPlaySequence()
{
var deferred = $.Deferred();
// your code...
var opplay = document.createElement('video');
// opplay logic here...
opplay.addEventListener("ended", function(e) {
// video ended logic here...
deferred.resolve();
}
return deferred;
}
doPlaySequence().then(drawConfig);
您会看到doPlaySequence
函数现在返回延迟,只有在视频停止播放后才会解决。反过来,drawConfig
将被调用。
答案 1 :(得分:1)
video.js播放器有一个你应该听的结束事件,你应该解决你的Deferer对象帖子。
在你的doPlaySequence()中,
myPlayer.on('ended', function() {
dtd.resolve();
});
您可能需要将dtd对象传递给doPlaySequence,或者只是在doPlaySequence中创建它,因为它的唯一目的是等到视频完全播放完毕。
设置超时不符合您的目的。