我试图用更好的$ .when承诺来重构一段糟糕的代码.我需要的是等待页面中的所有视频都加载,然后找到最长的视频.
旧代码是:
$.each($('video'), function() {
this.addEventListener('loadedmetadata', function() {
init_timer();
});
});
var num_videos = $('body video').length;
var video_loaded = 0;
function init_timer() {
video_loaded++;
if(video_loaded >= num_videos) {
console.log(getMaxVideoLenght());
}
}
Run Code Online (Sandbox Code Playgroud)
新的是:
$.when( $('video').on('loadedmetadata') )
.done(function() {
console.log(getMaxVideoLenght());
});
Run Code Online (Sandbox Code Playgroud)
旧版本可以工作但是在新代码中,console.log打印"0"因为视频尚未加载(即使已经完成了instad).