如何解决Modernizr异步测试
我正在做一个测试,看看是否可以在当前窗口的Chrome媒体参与度得分下播放音频。总结为Modernizr测试似乎是一件很整洁的事情。测试是这样的:
Modernizr.addTest('audioallowed',() => {
return new Audio().play().catch((e) => my logic returning true or false);
});
但这是异步的/返回一个promise。如何将其放在Modernizr测试中?我在文档中找不到任何内容。我想我会以不同的方式使用它:
Modernizr.audioallowed.then(() = {
//But I don't see anything like this in the docs...
});
解决方法
与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);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。