javascript - 如何判断一个 Promise 是否被浏览器支持

标签 javascript promise browser-detection es6-promise

有谁知道,使用 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/

相关文章:

javascript - 当第三方 javascript 异步函数完成执行时调用自定义函数

browser - 服务器端用户代理检测/嗅探是否不好?

javascript - 浏览器嗅探 - 边界半径 %

javascript - 如果浏览器是 Internet Explorer : run an alternative script instead

javascript - 使用 json 为 Flask-ReSTLess 获取 uri 查询

javascript - 图像 slider - 移动和桌面的不同图像

JavaScript 不从 HTML 更新值

javascript - 来自 Java 的 javascript 语法新手

javascript - 是否有更简洁的方法来解决或拒绝在 forEach 循环中创建的 Promise?

javascript - 依赖于异步调用的 JSON 迭代