如何将 updateend 事件侦听器添加到两个对象?

安全的

我的代码(不是完整的脚本,而是问题的必要部分):

request_xhr (video_url, function (buffer)
{
  video.addEventListener('updateend', function ()
  {
    appending_new_sources();
  });
  video.appendBuffer(buffer);
});

request_xhr (audio_url, function (buffer)
{
  audio.appendBuffer(buffer);
});

我正在使用 Media Source Extension API 创建视频播放器。我创建了两个source buffers称为videoaudio在上面的小代码中,我向视频和音频位置发送了两个请求,并将请求附加到视频播放器的链接videoaudio链接中。我增加了一个Event Listnerupdateendvideobufferer。appending_new_sources()一旦video缓冲区被更新,事件监听器就会打开该函数我想updateend在两个缓冲区上添加一个,音频和视频。所以该功能appending_new_sources()应该在视频和音频更新完成后打开。我不知道该怎么做。请帮忙。

TJ克劳德

使用通用处理程序并记住您收到了多少回调;当你得到两个时,请致电appending_new_sources

var callbacks = 0;
function handler() {
    if (++callbacks == 2) {
        appending_new_sources();
    }
}

request_xhr (video_url, function (buffer)
{
  video.addEventListener('updateend', handler);
  video.appendBuffer(buffer);
});

request_xhr (audio_url, function (buffer)
{
  audio.addEventListener('updateend', handler);
  audio.appendBuffer(buffer);
});

但是,这是 Promise 有用的众多地方之一。如果您给自己一个启用了 Promise 的版本request_xhr(可能会使用fetch),它会更简洁:

// Promise-enabled request_xhr:
request_xhr_promise(url, function(buffer)
{
  // You'll need to check for the error condition and use reject if an error occurs
  return new Promise(function(resolve, reject) {
      video.addEventListener('updateend', function() {
        resolve();
      });
      video.appendBuffer(buffer);
  });
});

// Using it for this:
Promise.all([
    request_xhr_promise(video_url),
    request_xhr_promise(audio_url),
])
.then(appending_new_sources)
.catch(function(err) {
    // Handle error
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以一种形式将两个事件侦听器添加到两个提交按钮

如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

将事件侦听器添加到绘制的对象

如何将多个事件侦听器添加到一个按钮?

将点击侦听器添加到PagerAdpater CardViews中的两个按钮

如何将侦听器添加到表?

如何将事件侦听器添加到Redux表单

如何将事件侦听器添加到动态创建的HTML列表元素?

如何将事件侦听器添加到 Map 标记 [] 数组

iOS UIWebView:如何将侦听器添加到DOM事件?

如何将事件侦听器添加到OverlayView?

如何将事件侦听器添加到JavaScript中的许多按钮?

如何将事件侦听器添加到画布上绘制的矩形?

如何将事件侦听器添加到RatingBar

如何将事件侦听器添加到tone.js中播放的音符

如何将事件侦听器添加到 Web 组件模板元素

如何将事件侦听器添加到“+”缩放元素?

如何将事件侦听器添加到动画变换旋转中?

如何将事件侦听器添加到React Native中的状态

如何将事件侦听器添加到数组中的每个元素?

如何将事件侦听器添加到单选按钮 - 地雷不触发

如何将事件侦听器添加到<input type = number>的默认箭头按钮

如何将事件侦听器添加到仅按钮元素

如何将事件侦听器添加到模板字符串

如何将侦听器添加到双向绑定的对象

Realm.js-如何将侦听器添加到单个对象并更新UI

尝试将事件侦听器添加到JTextField

将拖动事件侦听器添加到iframe

将“this”添加到事件侦听器?