【问题标题】:Syntax error in Opera and IE when using the code: async ()Opera和IE使用代码时出现语法错误:async()
【发布时间】:2018-04-06 02:12:05
【问题描述】:

我有一段代码适用于除 Internet Explorer 和 Opera 之外的所有浏览器。

这里是代码:JSFiddle

(async () => {
var InternalURL = "https://jsonplaceholder.typicode.com/posts/1";
var ExternalURL = "https://jsonplaceholder.typicode.com/comments";

    let image, data = await $.getJSON(InternalURL);
    if(data) {
        // Some code
    } else {
        // request failed
    }
    if(!image) {
        let data = await $.getJSON(ExternalURL);
        if(data) {
            // Some code
        } else {
            // request failed
        }
    }
    // Some code
})();

在 IE 中指向 (async () => { 行中的语法错误

知道为什么会这样以及如何解决吗?

我注意到它是一个 ES6 代码,是否可以转换一个对旧浏览器友好并且仍然提供相同输出的不同代码?

【问题讨论】:

  • async 关键字和 arrow function ( => ) 是 ES2017+ ... IE 是 1999 年的浏览器 ... 编译器是你唯一的选择 ... Opera 应该支持 => 在版本 32 + 和 async 版本 42+
  • async support in browsers。你可以使用 babel 编译你的代码来支持旧的浏览器。
  • Opera 现在是基于 Chromium 的,并且大部分都可以像 Chrome 一样工作,是不是很久没有更新了?

标签: javascript jquery internet-explorer asynchronous async-await


【解决方案1】:

asyncawait 不受 IE 支持,仅在 Opera 42 版后才支持(请参阅bottom of MDN article)。不要在旧浏览器上使用 ES6 - 使用 Babel 或其他转译器转译为 ES5(尽管在 IE 的情况下可能是 ES3?)。

【讨论】:

  • 如果他想使用 Promise 而不是回调,他可以使用其中一个可用的库,并将 async/await 代码转换为 Promise。我不确定 Babel 将 await 转换为旧浏览器的什么...
  • 它的副本...请关注这个:stackoverflow.com/questions/46066259/…
猜你喜欢
  • 2022-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
相关资源
最近更新 更多