V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
daijinming
V2EX  ›  JavaScript

js 也可以支持 await 了吗,求教前端

  •  
  •   daijinming · 2019-09-16 16:48:29 +08:00 · 8640 次点击
    这是一个创建于 1677 天前的主题,其中的信息可能已经有所发展或是发生改变。

    await 我还是第一次在前端代码中看到 await 关键字 ,前端大虾们讲讲

    42 条回复    2019-10-26 11:00:48 +08:00
    zy445566
        1
    zy445566  
       2019-09-16 16:49:52 +08:00
    早就支持了,谁用谁爽谁知道
    phpcxy
        2
    phpcxy  
       2019-09-16 16:51:08 +08:00
    Sniper416
        3
    Sniper416  
       2019-09-16 16:52:11 +08:00
    是的
    murmur
        4
    murmur  
       2019-09-16 16:53:11 +08:00
    这个 node 都要 8 以上才能用,浏览器肯定是要 babel 的
    LiuJiang
        5
    LiuJiang  
       2019-09-16 16:54:01 +08:00
    这种东西百度一下不好吗?
    daijinming
        6
    daijinming  
    OP
       2019-09-16 16:56:18 +08:00
    @murmur 也就是说直接在浏览器中运行还是不行的是吗
    banxi1988
        7
    banxi1988  
       2019-09-16 16:58:44 +08:00
    想要 await,又想要兼容性 推荐使用 TypeScript
    [Why TypeScript] (3) 有甜度的 TS 之 async/await,数组及对象解构
    https://www.bilibili.com/video/av67096409/
    zhwithsweet
        8
    zhwithsweet  
       2019-09-16 16:59:59 +08:00
    @daijinming #6 Chrome 可以
    randyo
        9
    randyo  
       2019-09-16 17:01:07 +08:00 via Android
    @daijinming 最新版的浏览器可以用,如果你不考虑兼容性的话😂
    wunonglin
        10
    wunonglin  
       2019-09-16 17:05:15 +08:00
    ```
    let fetchData = async function(){
    console.log('start')
    await new Promise(resolve => setTimeout(() => resolve(), 2000))
    console.log('end')
    }

    fetchData()
    ```


    为什么不行?不是已经支持很久了么,难道我 out 了?
    wunonglin
        11
    wunonglin  
       2019-09-16 17:06:31 +08:00
    https://caniuse.com/#search=async

    几百年前就支持了
    Phariel
        12
    Phariel  
       2019-09-16 17:08:12 +08:00 via iPhone
    TS 或者 Babel 做个兼容性转译吧
    15651980765
        13
    15651980765  
       2019-09-16 17:41:31 +08:00
    ES7 支持了 用起来比回调爽是真的谁用谁知道
    ochatokori
        14
    ochatokori  
       2019-09-16 17:45:24 +08:00 via Android
    chrome 早就可以了 现在连 class 都支持,碉堡了
    realkenshinji
        15
    realkenshinji  
       2019-09-16 18:13:40 +08:00 via iPhone
    @murmur Node 从 7.6 开始支持的好么
    yinjy
        16
    yinjy  
       2019-09-16 18:34:00 +08:00
    看了眼发帖时间
    Clarke
        17
    Clarke  
       2019-09-16 18:38:26 +08:00 via Android   ❤️ 1
    天翼 3G 太快了!
    xrr2016
        18
    xrr2016  
       2019-09-16 18:40:03 +08:00
    你是 GG 还是 MM ?
    moxiaonai
        19
    moxiaonai  
       2019-09-16 18:45:18 +08:00 via Android
    49 年入国军
    jinliming2
        20
    jinliming2  
       2019-09-16 18:50:19 +08:00 via iPhone
    @murmur
    @daijinming
    浏览器也支持好几年了,Chrome 55 开始支持的现在已经 Chrome 75 了。
    甚至浏览器都支持 # 开头的 class private fields 了,这个连 TypeScript 都还不支持,导致在 VSCode 里还报错……
    tomoya92
        21
    tomoya92  
       2019-09-16 18:53:10 +08:00 via iPhone
    @murmur chrome firefox 不用转也可以用
    murmur
        22
    murmur  
       2019-09-16 19:05:37 +08:00
    @jinliming2
    @tomoya92
    那就不上 babel 直接用么 看到时候出了兼容问题谁负责 反正 caniuse 上国内的数据是 79.34 的支持率
    sunjourney
        23
    sunjourney  
       2019-09-16 19:08:46 +08:00
    什么,大清亡了!
    star7th
        24
    star7th  
       2019-09-16 19:20:45 +08:00
    真的不是几年前的帖子?居然还有人问这个问题
    no1xsyzy
        25
    no1xsyzy  
       2019-09-16 20:04:09 +08:00
    不用 Babel 就好像在说:
    反正自己的用户不足百人, (1-91.13%=) 8.87% 的用户不能用也不过一双手数得过来……

    除了 Electron 其他都上 Typescript target: es5 就行了
    babel 转又不是你手写……
    cyrbuzz
        26
    cyrbuzz  
       2019-09-16 20:18:33 +08:00
    正好有个在写的前端项目,前后端通讯用的异步库,回调`.then()` 和 `await` 两种写法都有(因为是一步步来的...刚开始的教程上只有.then 的异步,后来看了看 Js 异步的资料发现可以用 `await`)。

    还没完全写完,可以看看ಠᴗಠ。

    https://github.com/HuberTRoy/vue-shiyanlou
    kangu
        27
    kangu  
       2019-09-16 20:38:28 +08:00
    谁用谁爽的,都应该没真实掉过坑的,await 写起来舒服,用得多了,光定位 error 估计都要命
    ugu
        28
    ugu  
       2019-09-16 22:20:14 +08:00
    中国申奥成功了
    sagaxu
        29
    sagaxu  
       2019-09-16 23:16:25 +08:00 via Android
    @murmur
    @no1xsyzy 内部项目随便玩,我有个项目只支持最新版和次新版 chrome/firefox,其它版本都禁止使用。
    jinliming2
        30
    jinliming2  
       2019-09-17 00:59:30 +08:00 via iPhone   ❤️ 1
    现在用 IE11 日常正常上网都感觉有点阻力了,看 caniuse 最晚支持 await 的浏览器都是 2017 年 1 月就支持了,要是还使用 2 年前的浏览器并且彻底隔绝所有升级更新的,那么肯定已经不是正常用户了(网络联通状态下,几个月,撑死一年不更新都很难了,光自动更新都能给你更新好几轮)。
    如果做的是大众型网站,肯定是不用考虑这些非正常终端的,因为这些终端设备肯定不是设计用来访问大众网站的。这些终端通常是办公型设备,上班摸鱼都是不允许的。或者是定制的设备比如 ATM 之类,更不可能正常使用的。
    而如果做的网站是面向 2 年前系统的,那么肯定是要单独定制的。

    对于 2 年前的浏览器还做专门兼容,你想兼容它们一辈子吗?为啥不针对 IE5 IE6 做兼容嘞?毕竟还有很多怀旧的人去装 win xp win 98,所以真实统计数据这些浏览器用户不会是 0。只不过真的有必要吗?
    网传某国军队内部还在用 win 98,如果哪天要求你为他们定制一个系统,你那还真是有必要兼容的……

    babel 只不过是现代版本的 jQuery 罢了,让本应该升级的用户有理由停留在旧版本,反正有人帮着做兼容,只不过是拖慢整个互联网发展的进程罢了。不然为啥国外 HTML5 取代 Flash 的速度比国内快那么多,就是 Chrome + FireFox 带着发展的啊!
    murmur
        31
    murmur  
       2019-09-17 08:21:36 +08:00
    @jinliming2 能不能找一个公众网站直接用 await 不 babel 的让我见识一下,规模不用大,a 站这种规模就可以
    w292614191
        32
    w292614191  
       2019-09-17 08:31:27 +08:00
    这个东西不是个语法糖之类的吗?
    就是在里面的回调里面调用另一个函数。

    你写两个 ajax 试试,还不是要在 ajax 的 success 里面 resolve();
    jydeng
        33
    jydeng  
       2019-09-17 09:08:34 +08:00
    要用 babel 转义,为了不加班修兼容性。
    dbpe
        34
    dbpe  
       2019-09-17 09:22:02 +08:00
    什么 java8 发布了?
    Curtion
        35
    Curtion  
       2019-09-17 10:05:02 +08:00
    是语法糖,做的就是 co 库的事情
    chaliely
        36
    chaliely  
       2019-09-17 11:46:05 +08:00
    是的支持,await,必须要放在 async 函数里面
    12tall
        37
    12tall  
       2019-09-17 12:19:57 +08:00
    es2017 的特性吧,但是主流不还是 es2015 么
    zephyru
        38
    zephyru  
       2019-09-17 15:47:31 +08:00
    @murmur 我不是想抬杠..不过 github 好像没做兼容直接在用 await....当然你觉得不算公众网站那就当我没说..
    murmur
        39
    murmur  
       2019-09-17 16:17:29 +08:00
    @zephyru github 在 chrome 下的确使用了 es6 语法,但是在 IE 下会自动加载另外一套代码保证基本的操作正常
    no1xsyzy
        40
    no1xsyzy  
       2019-09-17 19:37:00 +08:00
    @zephyru 论 Github 的 PE,是我见过并能想象的天花板。
    NoScript 的日子里(有类 Spectre 的 demo 还没修,而我还用着 iu 的日子里),只有 Github,我根本没有发现我没开 JS 运行权限。
    导致我有种拿网景浏览器都能正常使用 Github 的感觉。
    flowfire
        42
    flowfire  
       2019-10-26 11:00:48 +08:00
    chrome 从 55 版本就支持了
    Firefox 从 52 版本就支持了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:59 · PVG 06:59 · LAX 15:59 · JFK 18:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.