有谁知道,使用 Modernizr 或其他方式,是否有办法检测浏览器中是否启用了 Promise 功能?
我有一个用于该功能的 polyfill,但只想在浏览器没有 native 实现时应用它。
最佳答案
2016 年 12 月 11 日更新:所有常青版浏览器现在都支持 promises。它们可以安全使用。
2016 年 11 月 14 日更新:Chrome、Firefox、Safari 和 IE 现在都在其开发 channel 中提供了对 promises 的实验性支持。规范已经确定。我仍然不会依赖实现,而是会使用库,但这可能会在几个月内改变。
没有浏览器以可靠的方式原生支持 promises。规范可能会改变——至少再过几个月。我的建议是使用像 Bluebird 这样的快速 promise 库。
如果你想检查是否启用了原生 promise - 你可以这样做:
if(typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){
//here
}
正如其他人所建议的,只需检查是否有一个 Promise
对象就可以通过 if(Promise)
来完成,但我强烈建议不要这样做,因为不同的库有不同的 API创建 promise 等
关于javascript - 如何判断一个 Promise 是否被浏览器支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516959/