【问题标题】:Modernizr async testsModernizr 异步测试
【发布时间】:2020-09-24 23:05:42
【问题描述】:

我正在做一个测试,看看是否可以在当前窗口的 Chrome 媒体参与度得分下播放音频。总结为 Modernizr 测试似乎是一件好事。测试是这样的:

Modernizr.addTest('audioallowed', () => {
   return new Audio().play().catch((e) => my logic returning true or false);
});

但这是异步的/返回一个承诺。如何将其放入 Modernizr 测试中?我在文档中找不到任何内容。我想我会以不同的方式使用它:

Modernizr.audioallowed.then(() = {
   //But I don't see anything like this in the docs...
});

【问题讨论】:

    标签: es6-promise modernizr


    【解决方案1】:

    addTest 不同,Modernizr 不公开addAsyncTest 方法。而且,addTest 方法,您必须在其上进行中继,期望同步返回。没有同步返回 === 测试被解释为失败。

    关于你的具体任务:也许颠倒逻辑?

    new Audio().play().catch((e) => my logic returning true or false);
    

    成为

    new Audio().play().catch(function(e){
      
      var result;
    
      if(/*condition*/){
        result = true;
      } // else result = false;
    
      Modernizr.addTest('audioallowed', result);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-22
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      相关资源
      最近更新 更多