use*_*501 29 javascript browser-detection promise es6-promise
有没有人知道,使用Modernizr或其他方法,如果有办法检测是否在浏览器中启用了Promise功能?
我有一个polyfill用于功能,但只想在浏览器没有本机实现时应用它.
Ben*_*aum 37
2016年12月11日更新:所有常绿版本的浏览器现在都支持承诺.它们可以安全使用.
2016年11月14日更新: Chrome,Firefox,Safari和IE现在都在他们的开发频道中实现了承诺的实验性支持.规范已经解决.我仍然不会依赖于实现,并且会使用库,但这可能会在几个月后发生变化.
没有浏览器以可靠的方式原生支持promises.规范可能会改变 - 至少再持续几个月.我的建议是使用像Bluebird这样的快速承诺库.
如果要检查是否启用了本机承诺 - 您可以执行以下操作:
if(typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){
//here
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所建议的那样,只是检查是否有Promise对象可以通过if(Promise)但我强烈建议反对它,因为不同的库有不同的API来创建承诺等.
Jas*_*ing 13
这将引发在"无极"是不确定的:
if (Promise)
// do code
Run Code Online (Sandbox Code Playgroud)
这永远不会抛出:
if (window.Promise)
// do code
Run Code Online (Sandbox Code Playgroud)
是的,可以在浏览器环境中依赖窗口对象.