找回密码
 注册

The play() request was interrupted by a new load request

php 发表于 2017/12/23 17:33 | 显示全部楼层 |阅读模式
Console Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.
HTML5 audio / video 在 Audio / Video 元素调用play()以后并不是直接就播放音乐或视频,而是等待加载到可以开始播放时才正式播放,video / audio.play()返回一个Promise对象,而不是true或false. 使用try{}catch(x){}finally{}不能捕获Promise中抛出的异常,因为加载资源的过程是异步进行的。Promise中文意思是“承诺”,所谓的承诺,有可能实现,也有可能无法实现,所以Promise对象只是一个代理对象,他代理的值是不确定的。Promise拥有以下方法
  • Promise.all()
  • Promise.prototype.catch()
  • Promise.prototype.then()
  • Promise.race()
  • Promise.reject()
  • Promise.resolve()
Promise.prototype.catch()和Promise.prototype.then()返回Promise对象, 可以链式调用。
想要catch(捕获)Promise中抛出的异常,可以使用Promise.prototype.catch()来实现。示例代码如下。
  1. // ...... 其他代码省略 ...
  2. // oAudioWuXiancheng是一个audio元素对象
  3. var promise = oAudioWuXiancheng . play();
  4. promise && promise.catch(function(reason){
  5.         console.log(reason);
  6. });
  7. // ... 其他代码省略 ...
复制代码

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表