我的网页可能会被一些旧浏览器加载(具体来说,在带有 WebView 的 Android 应用程序中,一些相当旧的设备可能仍在使用它)...不是那么多,所以我不想去太多完全支持它们很麻烦,但我至少希望页面能够加载。所以,我宁愿不求助于转译器等来支持所有完全向后兼容的东西。
那么如何让我的代码在旧版浏览器上“安全”使用呢?我的代码中使用 promises 的那些部分是“可选的”,因为如果它们不可访问,那么该页面仍然可以使用。所以我想要某种方式在我的代码中包含 promises 而不会破坏旧浏览器的东西。
是否足以将这些部分放入 promise 支持检查中,例如 if (window.Promise) { myPromise = getMeAPromise(); mPromise.then(...).catch(...); }
以便解释器永远不会到达这些部分?或者是否有一个编译过程仍然会导致它在不受支持的浏览器上失败?
最佳答案
只要您以一种在没有支持的情况下也不会失败的方式测试支持,您就不必担心。您的 if (window.Promise)
符合该定义,但如果是我,我会使用 if (typeof Promise !== "function")
。所以也许:
var hasPromiseSupport = typeof Promise === "function";
...然后 if (hasPromiseSupport)
围绕可选位。
综上所述:有完整的 Promise polyfills 可用,因此您可以有条件地包含一个:
if (typeof Promise !== "function") {
document.write('<script src="some-promise-polyfill.js"><\/script>');
}
...然后你就会得到 promise 。 (是的,在我看来,这是 document.write
剩下的一个有效用例。)
关于javascript - 在不受支持的浏览器上的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731033/